Vb.net向sql server数据库中保存图片(一)

Vb.netsql server数据库中保存图片

袁志

预备知识:STREAMADO.NET

 

微软的SQL SERVER数据库的Imagetext等字段都属于二进制的大对象。这些对象的存取和其他轻型对象略有不同。比如,我们打开一个数据表的时候,普通类型的字段都可以看见,而Image类型的字段却不行,只能通过编程的方法来读取。这篇资料就是介绍怎样用vb.NET来向sql server数据库中存放图片,怎样从数据库中取出图片浏览。我在这里也费了老大的精力,主要是为了答复一个同学的提问。(他刨根问底式的学习方式,把我急出一身冷汗,惭愧。。。。。。)

 

这个例程用到了 sql server自带的northwind数据库,其中employees(职员)数据表有一个字段“photo”,是用来存放照片的,里面有9条记录,我费了半天力气,想去看看那9个人图片,就是看不见。现在猜测,这些人的photo根本就是空的。所以,我决定添加一些新的记录。

在这个例程里,我实现了一个简单的WinForm程序,这个程序通过点击“Open”按钮选择一个图片文件(bmpjpg),并显示在图形控件PictureBox中。通过“Save”按钮存入数据库。点击“ViewCheckBox可以切换到浏览状态,观看存入数据库的图片。


  微软.NET FrameworkSystem.IO命名空间下给我们提供了一个FileStream文件流类。我们可以使用这个文件流对二进制大对象轻松进行读写。由于对二进制大对象使用的流操作,所以对于任何文件都具有通用性。读写文本文件也可以这么做。

步骤:

1、   先来看一下northwind数据库中employees表结构

2、   知道.net连接sql server的方法嘛,不知道的话,看看我写的“ado.net中的connection对象”吧。读懂下面这几句没问题吧:

Dim conn as new sqlconnection(server=localhost;database=northwind;Integrated Security=true;

        Dim sqlcomm As New SqlCommand

        sqlcomm.Connection = conn

        sqlcomm.CommandText = "INSERT INTO employees (lastname,firstname,photo) VALUES (@lastname,@firstname,@photo)"               

        Dim prm1 As New SqlParameter("@lastname", txtLN.Text)

        Dim prm2 As New SqlParameter("@firstname", txtFN.Text)

        Dim prm3 As New SqlParameter("@photo", SqlDbType.VarBinary, Int(fs.Length), _ ParameterDirection.Input, False, 0, 0, "", DataRowVersion.Current, Data)

        sqlcomm.Parameters.Add(prm1)

        sqlcomm.Parameters.Add(prm2)

        sqlcomm.Parameters.Add(prm3)

 


3
、新建一个windows应用程序窗体,界面如下:(图1)

其中:有一个checkBox:checkBox1,

 

有两个textBoxtxtLN,txtFN,

 

有四个lebel,其中一个没有文字的lblPhoto(用来存放photo文件位置),

 

四个button:btnBack, btnForward, btnOpen, btnSave

 

 

 

4、   进入到代码设计部分,首先声明应用的名称空间:

Imports System

Imports System.Drawing

Imports System.Collections

Imports System.ComponentModel

Imports System.Windows.Forms

Imports System.Data

Imports System.Drawing.Imaging

Imports System.IO

Imports System.Data.SqlClient

好像多了一点哈,不过反正没毒。

(2)

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值