VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • vb.net 教程 8-3 数据库操作11

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

数据新增、删除和修改操作差不多。

无非就是新建sql语句,执行command.ExecuteNonQuery

本节例子使用的是NorthWind中的类别表。

有了前面查询和修改的知识,相信大家可以看懂下面的代码:


  1.  
    Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
  2.  
    Dim odc As New OleDbConnection()
  3.  
    odc.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;data source=Northwind.mdb;"
  4.  
     
  5.  
    Dim odcommand As New OleDbCommand()
  6.  
    odcommand.CommandText = "insert into 类别(类别名称,说明,图片) values(@typename,@typeinfo,@imgType)"
  7.  
    odcommand.Connection = odc
  8.  
    odc.Open()
  9.  
     
  10.  
    odcommand.Parameters.Add("@typename", OleDbType.VarChar)
  11.  
    odcommand.Parameters("@typename").Value = txtName.Text
  12.  
    odcommand.Parameters.Add("@typeinfo", OleDbType.VarChar)
  13.  
    odcommand.Parameters("@typeinfo").Value = txtInfo.Text
  14.  
     
  15.  
    Dim bmp As New Bitmap(200, 100)
  16.  
    Dim g As Graphics = Graphics.FromImage(bmp)
  17.  
    g.DrawImage(picType.Image, New Rectangle(0, 0, picType.Width, picType.Height), New Rectangle(0, 0, picType.Image.Width, picType.Image.Height), GraphicsUnit.Pixel)
  18.  
    g.Dispose()
  19.  
    Dim ms As New IO.MemoryStream()
  20.  
    bmp.Save(ms, Imaging.ImageFormat.Bmp)
  21.  
     
  22.  
    PictureBox1.Image = bmp
  23.  
     
  24.  
    Dim buff() As Byte
  25.  
    ReDim buff(ms.Length)
  26.  
     
  27.  
    buff = ms.ToArray
  28.  
    ms.Close()
  29.  
     
  30.  
    odcommand.Parameters.Add("@imgType", OleDbType.LongVarBinary)
  31.  
    odcommand.Parameters("@imgType").Value = buff
  32.  
     
  33.  
    odcommand.ExecuteNonQuery()
  34.  
     
  35.  
    odc.Close()
  36.  
    End Sub

以上代码将二进制数据写入类别表中的图片列中。但是由于northwind数据库中的图片保存的和一般的图片略有区别,需要增加部分数据

要加入的数据:


  1.  
    Private Function getoledata() As Byte()
  2.  
    Dim oledatastring As String = "151C2F00020000000D000E0014002100FFFFFFFF4269746D617020496D616765005061696E742E5069637475726500010500000200000007000000504272757368000000000000000000A0290000"
  3.  
    Dim datalength As Integer = oledatastring.Length
  4.  
     
  5.  
    Dim buff() As Byte
  6.  
    ReDim buff(datalength \ 2 - 1)
  7.  
     
  8.  
    For i As Integer = 0 To datalength - 1 Step 2
  9.  
    buff(i \ 2) = Convert.ToInt32(oledatastring.Substring(i, 2), 16)
  10.  
    Next
  11.  
    Return buff
  12.  
    End Function

修改后的代码:

 


  1.  
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  2.  
    Dim odc As New OleDbConnection()
  3.  
    'odc.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;data source=D:\save\博客教程\08 数据库\Northwind1.mdb;jet oledb:database password=northwind;"
  4.  
    odc.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;data source=Northwind.mdb;"
  5.  
     
  6.  
    Dim odcommand As New OleDbCommand()
  7.  
    odcommand.CommandText = "insert into 类别(类别名称,说明,图片) values(@typename,@typeinfo,@imgType)"
  8.  
    odcommand.Connection = odc
  9.  
    odc.Open()
  10.  
     
  11.  
    odcommand.Parameters.Add("@typename", OleDbType.VarChar)
  12.  
    odcommand.Parameters("@typename").Value = txtName.Text
  13.  
    odcommand.Parameters.Add("@typeinfo", OleDbType.VarChar)
  14.  
    odcommand.Parameters("@typeinfo").Value = txtInfo.Text
  15.  
     
  16.  
    Dim bmp As New Bitmap(172, 120)
  17.  
    Dim g As Graphics = Graphics.FromImage(bmp)
  18.  
    g.DrawImage(picType.Image, New Rectangle(0, 0, 172, 120), New Rectangle(0, 0, picType.Image.Width, picType.Image.Height), GraphicsUnit.Pixel)
  19.  
    g.Dispose()
  20.  
    Dim ms As New IO.MemoryStream()
  21.  
    bmp.Save(ms, Imaging.ImageFormat.Bmp)
  22.  
     
  23.  
    Dim olebodybuff() As Byte
  24.  
    ReDim olebodybuff(ms.Length)
  25.  
     
  26.  
    ms.Position = 0
  27.  
    'ms.Write(olebodybuff, 0, ms.Length)
  28.  
    olebodybuff = ms.ToArray
  29.  
    ms.Close()
  30.  
     
  31.  
    Dim oleheadbuff() As Byte
  32.  
    oleheadbuff = getoledata()
  33.  
     
  34.  
    Dim olebuff() As Byte
  35.  
    ReDim olebuff(olebodybuff.Length + oleheadbuff.Length - 1)
  36.  
    oleheadbuff.CopyTo(olebuff, 0)
  37.  
    olebodybuff.CopyTo(olebuff, oleheadbuff.Length)
  38.  
     
  39.  
     
  40.  
    odcommand.Parameters.Add("@imgType", OleDbType.LongVarBinary)
  41.  
    odcommand.Parameters("@imgType").Value = olebuff
  42.  
     
  43.  
    odcommand.ExecuteNonQuery()
  44.  
     
  45.  
    odc.Close()
  46.  
    End Sub

 

 

 

非常遗憾的是,在access中可以直接在画图中打开原有的图片,但是似乎新增的图片不能打开。

但是可以在 vb.net 教程 8-3 数据库操作9-1 的例子中打开

 

 

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。
 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/uruseibest/article/details/78882533

相关教程