在SQL Server数据库实现图片文件的存取

-- 如果要将图片数据存入SQL Server数据库的表中,我们必须使用SQL Server的image数据类型。

在很多时候,我们需要将图片文件存入到SQL Server数据库中,并且在使用的时候将数据库中的图片取出。本文将描述用C#语言来实现这一过程。
  数据库表结构
  如果要将图片数据存入SQL Server数据库的表中,我们必须使用SQL Server的image数据类型,在被试验中,我们将使用如下的语句创建数据库表StudentInfo:
  CREATE TABLE [dbo].[StudentInfo]
  (
  [ID] [int] IDENTITY(1,1) NOT NULL,
  [Name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
  [Age] [int] NULL,
  [Sex] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
  [Class] [varchar](15) COLLATE Chinese_PRC_CI_AS NULL,
  [Hobby] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
  [Picture] [image] NULL
  )
  其中字段Picture字段为image数据类型,用来保存学生的照片。
  图片存入数据库
  要将图片数据存入到数据库表的image数据类型的字段中,首先需要将图片文件中的数据读入到内存字节中,在将内存字节存入数据库中,具体示例代码如下:

private void btnUpload_Click(object sender, EventArgs e)
  {
  //上传图片到数据库
  OpenFileDialog openDlg = new OpenFileDialog();
  openDlg.Filter = "图片文件(*.jpg)|*.jpg";
  string filePath = "";
  if (openDlg.ShowDialog() == DialogResult.OK)
  {
  filePath = openDlg.FileName;
  this.txtFilePath.Text = filePath;
  this.picShow.ImageLocation = filePath;
  //打开文件流,用来读取图片文件中的数据
  FileStream stream = new FileStream(filePath,FileMode.Open,FileAccess.Read);
  //将文件流中的数据存入内存字节组中
  byte[] buffer = new byte[stream.Length];
  stream.Read(buffer,0,(int)stream.Length);
  stream.Close();
  try
  {
  //调用存储图片数据的存取过程
  string strName = Path.GetFileName(filePath);
  string connString = "Data Source=.;Initial Catalog=StuDB;Persist Security Info=True";
  SqlConnection conn = new SqlConnection(connString);
  conn.Open();
  SqlCommand cmd = new SqlCommand("proc_UploadPicture", conn);
  cmd.CommandType = CommandType.StoredProcedure;
  cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 1;
  cmd.Parameters.Add("@Picture", SqlDbType.Image).Value = buffer;
  cmd.Parameters.Add("@Ext", SqlDbType.VarChar).Value = strName;
  cmd.ExecuteNonQuery();
  conn.Close();
  }
  catch (Exception ex)
  {
  MessageBox.Show(ex.Message);
  }
  }
  }
  存储过程proc_UploadPicture代码如下:
  Create procedure [dbo].[proc_UploadPicture]
  @ID int,
  @Picture image
  AS
  update StudentInfo set Picture = @Picture
  where ID = @ID
  从数据库读取图片
  要从数据库中获取图片数据,并将图片显示在界面上,需要将数据库中的图片数据读入到内存中,在将内存的数据用位图来格式化,并将位图显示在界面的PictureBox控件中。具体的实例代码如下:
  private void btnDownload_Click(object sender, EventArgs e)
  {
  //将数据库中的图片显示出来
  try
  {
  byte[] imageBytes;
  string connString = "Data Source=.;Initial Catalog=StuDB;Persist Security Info=True";
  SqlConnection conn = new SqlConnection(connString);
  conn.Open();
  SqlCommand cmd = new SqlCommand("proc_DownloadPicture", conn);
  cmd.CommandType = CommandType.StoredProcedure;
  cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 1;
  SqlDataReader dataReader = cmd.ExecuteReader();
  if (dataReader.Read())
  {
  //获取图片数据
  imageBytes = (byte[])dataReader["Picture"];
  //将内存流格式化为位图
  MemoryStream stream = new MemoryStream(imageBytes);
  Bitmap bmap = new Bitmap(stream);
  stream.Close();
  //将位图显示在界面的PictureBox控件中
  this.picShow.Image = bmap;
  }
  dataReader.Close();
  conn.Close();
  }
  catch (Exception ex)
  {
  MessageBox.Show(ex.Message);
  }
  }
存储过程proc_DownloadPicture代码如下:
  Create procedure [dbo].[proc_DownloadPicture]
  @ID int
  as
  select Picture
  from StudentInfo
  where ID = @ID

 

转载于:https://www.cnblogs.com/moweijie-mdeveloper/p/7133146.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<h3>回答1:</h3><br/>Java连接SQL Server数据库可以使用JDBC(Java Database Connectivity)技术。以下是实现增删改查的基本步骤: 1. 导入SQL Server JDBC驱动程序 在Java项目中,需要将SQL Server JDBC驱动程序添加到类路径中。可以从Microsoft官网下载最新版本的驱动程序。 2. 建立数据库连接 使用JDBC API中的DriverManager类和Connection接口建立与SQL Server数据库的连接。需要提供数据库的URL、用户名和密码等信息。 3. 执行SQL语句 使用Connection接口的createStatement()方法创建一个Statement对象,然后使用该对象执行SQL语句。可以执行增加、删除、修改和查询等操作。 4. 处理结果集 如果执行的是查询操作,可以使用ResultSet接口获取查询结果集。可以使用ResultSet对象的方法遍历结果集,获取每一行数据的各个字段值。 5. 关闭数据库连接 使用Connection接口的close()方法关闭数据库连接,释放资源。 以上是Java连接SQL Server数据库实现增删改查的基本步骤。具体实现可以参考JDBC API文档和SQL Server JDBC驱动程序的使用说明。 <h3>回答2:</h3><br/>Java连接SQL Server数据库可以使用JDBC(Java Database Connectivity)技术,JDBC是Java程序访问各种关系型数据库的标准API。 首先需要下载并安装SQL Server驱动程序(.jar文件),然后在Java程序中导入驱动程序。 在使用JDBC访问SQL Server数据库时,需要先建立数据库连接。可以使用以下代码建立连接: ``` // 加载JDBC驱动 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 建立数据库连接 String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=mydb"; String user = "sa"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); ``` 其中,url中的127.0.0.1是本地IP地址,1433是SQL Server默认端口号,mydb是数据库名称,user和password是登录用户名和密码。如果没有用户名和密码,可以省略。 连接成功后,就可以使用Java代码进行增删改查操作。以下是增加一条记录的示例代码: ``` String sql = "insert into student(name,age) values('Tom',20)"; Statement stmt = conn.createStatement(); int count = stmt.executeUpdate(sql); ``` 其中,sqlSQL语句,stmt是Statement对象,通过conn对象的createStatement()方法创建,count是影响的行数。 以下是查询数据的示例代码: ``` String sql = "select * from student"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while(rs.next()) { String name = rs.getString("name"); int age = rs.getInt("age"); System.out.println(name + " " + age); } ``` 其中,rs是ResultSet对象,通过stmt对象的executeQuery()方法创建,每次调用rs.next()方法可以将结果集指针移动到下一行。rs.getString("name")和rs.getInt("age")分别表示获取该行记录中name和age字段的值。 删除和修改操作也类似,只需要改变SQL语句即可。 完成操作后,需要关闭数据库连接,以便释放资源。以下是关闭连接的示例代码: ``` rs.close(); stmt.close(); conn.close(); ``` 以上就是Java连接SQL Server数据库实现增删改查的基本方法。实际应用中,可能需要结合Spring等框架来优化代码。 <h3>回答3:</h3><br/>Java作为一种面向对象的编程语言,具有类库丰富、应用范围广泛和跨平台的特点,被广泛应用于各个领域。在Java应用程序中,访问数据库是一项非常重要的任务。SQL Server是Microsoft公司开发的一种关系型数据库管理系统,在企业应用中被广泛使用。因此,本文将介绍如何使用Java连接SQL Server数据库实现增删改查的操作。 步骤一:加载SQL Server驱动 在Java程序中访问SQL Server数据库,首先需要将SQL Server驱动加载到程序中。在Java 1.6之后,可以使用JDBC 4.0自动加载驱动。以下是加载SQL Server驱动的示例代码: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 步骤二:建立连接 在加载完驱动后,要建立与数据库的连接。SQL Server数据库使用JDBC URL来标识数据库和访问方式。以下是连接SQL Server数据库的示例代码: String url = "jdbc:sqlserver://localhost:1433;databaseName=mydatabase"; Connection con = DriverManager.getConnection(url, "myuser", "mypassword"); 其中,localhost:1433表示SQL Server数据库的IP地址和端口号;mydatabase表示要连接的数据库名称;myuser和mypassword分别是连接数据库的用户名和密码。 步骤三:执行SQL语句 连接成功后,可以执行SQL语句来实现增删改查的操作。Java中的PreparedStatement类可以通过占位符(?)来提高性能和安全性。以下是实现向表中插入数据的示例代码: String sql = "INSERT INTO mytable(name, age) VALUES (?, ?)"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, "Tom"); pstmt.setInt(2, 26); pstmt.executeUpdate(); 其中,?号用于占位符,pstmt.setString(1, "Tom")和pstmt.setInt(2, 26)分别用于设置占位符的值。 如果要实现删除、更新和查询操作,可以通过以下示例代码实现: // 删除数据 String sql = "DELETE FROM mytable WHERE id = ?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, 1); pstmt.executeUpdate(); // 更新数据 String sql = "UPDATE mytable SET age = ? WHERE id = ?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setInt(1, 28); pstmt.setInt(2, 1); pstmt.executeUpdate(); // 查询数据 String sql = "SELECT * FROM mytable WHERE name = ?"; PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, "Tom"); ResultSet rs = pstmt.executeQuery(); while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); } 其中,rs.next()方法用于指向下一行,getId("id")、getString("name")和getInt("age")分别用于获取指定列的值。 步骤四:关闭连接 数据库连接是一种资源,需要在使用完毕后关闭以释放资源。以下是关闭连接的示例代码: if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (con != null) con.close(); 以上是Java连接SQL Server数据库实现增删改查的方法和步骤。在实际开发中,可以根据具体的需求和业务逻辑来灵活使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值