关于sql2005从数据库存取图片

3 篇文章 0 订阅
1 篇文章 0 订阅

 private void button1_Click(object sender, EventArgs e)
        {
            FileStream fs = new FileStream(@"C:\Documents and Settings\Administrator\桌面\存放图片\C#电子像册\dzxc\dzxc\bin\Debug\Image\4.jpg", FileMode.Open, FileAccess.Read);//读取D盘c.jpg转换为数据流
            Byte[] btye2 = new byte[fs.Length];
            fs.Read(btye2, 0, Convert.ToInt32(fs.Length));
            fs.Close();

            using (SqlConnection conn = new SqlConnection("server=(local);uid=sa;pwd=123;database=teach"))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                cmd.CommandText = "insert into image(image) values(@image)";//插入数据库
                SqlParameter par = new SqlParameter("@image", SqlDbType.Image);
                par.Value = btye2;
                cmd.Parameters.Add(par);

                int t = (int)(cmd.ExecuteNonQuery());
                if (t > 0)
                {
                    MessageBox.Show("插入成功!");
                }
                conn.Close();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            byte[] MyData = new byte[0];
            using (SqlConnection conn = new SqlConnection("server=(local);uid=sa;pwd=123;database=teach"))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                cmd.CommandText = "select image from image where id='1'";
                SqlDataReader sdr = cmd.ExecuteReader();
                sdr.Read();
                MyData = (byte[])sdr["image"];//读取第一个图片的位流
                int ArraySize = MyData.GetUpperBound(0);//获得数据库中存储的位流数组的维度上限,用作读取流的上限
                MemoryStream ms = new MemoryStream(MyData,true);
                ms.Write(MyData,0,MyData.Length);
                pictureBox1.Image = new Bitmap(ms, true);
                conn.Close();
                MessageBox.Show("读取成功!");
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要从 Access 数据库存取图片,需要将图片转换成二进制格式,并将其存储在 OLE Object 类型的字段中。 以下是一个简单的示例,演示如何从 Access 数据库存取图片: 1. 使用 OLE Object 数据类型创建一个表,用于存储图片。 2. 使用 Access 或其他编程语言编写代码,将图片转换为字节数组,并将其插入到数据库中。 ```vb ' VB.NET 示例代码 Private Sub AddImageToDatabase(ByVal name As String, ByVal imageData As Byte()) Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\MyDatabase.mdb") Dim sql As String = "INSERT INTO images (name, data) VALUES (?, ?)" Dim cmd As New OleDbCommand(sql, conn) cmd.Parameters.AddWithValue("@name", name) cmd.Parameters.AddWithValue("@data", imageData) conn.Open() cmd.ExecuteNonQuery() conn.Close() End Sub ``` 3. 从数据库中检索图像并将其显示在应用程序中。 ```vb ' VB.NET 示例代码 Private Sub DisplayImageFromDatabase(ByVal id As Integer) Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\MyDatabase.mdb") Dim sql As String = "SELECT data FROM images WHERE id = ?" Dim cmd As New OleDbCommand(sql, conn) cmd.Parameters.AddWithValue("@id", id) conn.Open() Dim reader As OleDbDataReader = cmd.ExecuteReader() If reader.Read() Then Dim data As Byte() = DirectCast(reader("data"), Byte()) Dim ms As New System.IO.MemoryStream(data) Dim image As Image = Image.FromStream(ms) ' 将图像显示在应用程序中 End If reader.Close() conn.Close() End Sub ``` 请注意,将大量图像存储在 Access 数据库中可能会影响性能。在某些情况下,最好将图像存储在文件系统中,并在数据库中存储图像的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值