none
怎样用vb.net2005连接数据库? 怎样把用VB.NET在数据库中存取图片?? RRS feed

  • 问题

  • 怎样用vb.net2005连接数据库?  怎样把用VB.NET在数据库中存取图片??
    请各位大侠帮帮我,最好能用access和SqlServer举例,尽量详细
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年8月18日 8:03

答案

  • Imports System
    Imports System.IO
    Imports System.Data
    Imports System.Data.OleDb
    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ''添加图片
            Dim o As System.IO.FileStream
            Dim r As StreamReader
            o = New FileStream("E:\bjxml20071016004.jpg", FileMode.Open, FileAccess.Read, FileShare.Read)
            r = New StreamReader(o)
            Dim FileByteArray(o.Length - 1) As Byte
            o.Read(FileByteArray, 0, o.Length)

            Dim cn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\WebSite1\vb\WindowsApplication1\WindowsApplication1\Image2Access.mdb")
            cn.Open()

            Dim command As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand("INSERT INTO Person (PersonName,PersonEmail,PersonSex,PersonImageType,PersonImage) VALUES (@PersonName,@PersonEmail,@PersonSex,@PersonImageType,@PersonImage)", cn)
            command.Parameters.AddWithValue("@PersonName", "name")
            command.Parameters.AddWithValue("@PersonEmail", "mengxianhui@dotnet.aspx.cc")
            command.Parameters.AddWithValue("@paramPersonSex", "男")
            command.Parameters.AddWithValue("@PersonImageType", "image/jpeg")
            command.Parameters.AddWithValue("@PersonImage", FileByteArray)
            command.ExecuteNonQuery()
            cn.Dispose()

        End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            ''显示图片
            Dim memoryStream As System.IO.MemoryStream
            Dim cn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\WebSite1\vb\WindowsApplication1\WindowsApplication1\Image2Access.mdb")
            cn.Open()
            Dim command As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand("select top 1 * from Person Order By PersonID DESC", cn)
            Dim dr As OleDbDataReader = command.ExecuteReader
            If (dr.Read) Then
                Dim buffer As Byte()
                buffer = CType(dr("PersonImage"), Byte())
                memoryStream = New System.IO.MemoryStream(buffer)
                Me.PictureBox1.Image = New System.Drawing.Bitmap(memoryStream)
                memoryStream.Dispose()
            End If
            cn.Dispose()

        End Sub
    End Class
    【孟子E章】
    • 已标记为答案 litianlt 2009年8月21日 8:06
    2009年8月20日 1:20
    版主

全部回复

  • 你好!
         连接Access可以这样:

    Private Function getAccessConnection() As OleDbConnection

              Dim dbConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;

        Data Source=C:\myDatabase.mdb;Persist Security Info=true"
              Dim dbConnection As OleDbConnection = New OleDbConnection(dbConnectionString)

                Try
                  dbConnection.Open()
                Catch Ex As Exception
                  ’MsgBox(Err.Description)
                End Try

              Return dbConnection

          End Function

         连接Sql Server可以这样:

    Dim connection As SqlConnection = New SqlConnection("Data Source=(local);Initial Catalog=AdventureWorks; Integrated Security=SSPI; Integrated Security=SSPI;")
    connection.Open()


    周雪峰
    2009年8月18日 11:59
    版主
  • http://dotnet.aspx.cc上有sql server和access的例子
    【孟子E章】
    2009年8月18日 13:04
    版主
  • 你好,非常感谢,这样一段代码是不是就不用再添加控件了呢?


    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年8月19日 0:37
  • 您好,不用添加了,上面使用的都是基本类库里的。
    2009年8月19日 2:03
  • 不用了,这是用代码连接数据库!1
    周雪峰
    2009年8月19日 2:11
    版主
  • 我就是照你这样做的,可为什么连不上呢 ?是不是和ACCESS设了密码有关呢 ??
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年8月19日 2:40
  • access文件路径确定正确路径才能连接 和sqlserver不同
    sqlserver 在iis上必须设置用户和密码
    我不懂vb 没能写出vb代码 很抱歉
    2009年8月19日 2:46
  • 你把连接字符串换一下:
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=;"
    用户名和密码填写你自己设置的

    周雪峰
    2009年8月19日 3:12
    版主
  •  我是这样写的
    Dim dbConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\My Documents\Visual Studio 2005\Projects\PicturetoAccess\\PicturetoAccess\txgz.mdb;Persist Security Info=true;User ID=Admin;Database Password=lt"
    不过提示错误   “找不到可安装的ISAM”。这是怎么回事呢,不设密码的情况下就可以

    如果写成这样: Dim dbConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\My Documents\Visual Studio 2005\Projects\PicturetoAccess\\PicturetoAccess\txgz.mdb;Persist Security Info=true;User ID=Admin; Password=lt"     就提示错误:“无法启动应用程序,工作组信息文件丢失,或已被其它文件以独占方式打开”


    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年8月19日 7:28
  • Provider=‘Microsoft.Jet.OLEDB.4.0;’  缺少了分号
    2009年8月19日 7:34
  • 有分号呀
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\My Documents\Visual Studio 2005\Projects\PicturetoAccess\\PicturetoAccess\txgz.mdb;Persist Security Info=true;User ID=Admin;Database Password=lt"
    你再详细看看
    昨夜西风凋碧树,独上高楼,望尽天涯路!
    2009年8月19日 8:59
  • 我晕了  我说的是单引号  不好意思
    2009年8月19日 10:53
  • Imports System
    Imports System.IO
    Imports System.Data
    Imports System.Data.OleDb
    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ''添加图片
            Dim o As System.IO.FileStream
            Dim r As StreamReader
            o = New FileStream("E:\bjxml20071016004.jpg", FileMode.Open, FileAccess.Read, FileShare.Read)
            r = New StreamReader(o)
            Dim FileByteArray(o.Length - 1) As Byte
            o.Read(FileByteArray, 0, o.Length)

            Dim cn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\WebSite1\vb\WindowsApplication1\WindowsApplication1\Image2Access.mdb")
            cn.Open()

            Dim command As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand("INSERT INTO Person (PersonName,PersonEmail,PersonSex,PersonImageType,PersonImage) VALUES (@PersonName,@PersonEmail,@PersonSex,@PersonImageType,@PersonImage)", cn)
            command.Parameters.AddWithValue("@PersonName", "name")
            command.Parameters.AddWithValue("@PersonEmail", "mengxianhui@dotnet.aspx.cc")
            command.Parameters.AddWithValue("@paramPersonSex", "男")
            command.Parameters.AddWithValue("@PersonImageType", "image/jpeg")
            command.Parameters.AddWithValue("@PersonImage", FileByteArray)
            command.ExecuteNonQuery()
            cn.Dispose()

        End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            ''显示图片
            Dim memoryStream As System.IO.MemoryStream
            Dim cn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\WebSite1\vb\WindowsApplication1\WindowsApplication1\Image2Access.mdb")
            cn.Open()
            Dim command As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand("select top 1 * from Person Order By PersonID DESC", cn)
            Dim dr As OleDbDataReader = command.ExecuteReader
            If (dr.Read) Then
                Dim buffer As Byte()
                buffer = CType(dr("PersonImage"), Byte())
                memoryStream = New System.IO.MemoryStream(buffer)
                Me.PictureBox1.Image = New System.Drawing.Bitmap(memoryStream)
                memoryStream.Dispose()
            End If
            cn.Dispose()

        End Sub
    End Class
    【孟子E章】
    • 已标记为答案 litianlt 2009年8月21日 8:06
    2009年8月20日 1:20
    版主