在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
源码如下:
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.Sql; using System.Data.SqlClient; using System.IO; namespace ImageToDB { public partial class UserEdit : Form { public UserEdit() { InitializeComponent(); } private void UserEdit_Load(object sender, EventArgs e) { LoadNextUser(); } string strConn = "Data Source=wangyang\\SQLEXPRESS;Initial Catalog=test;Persist Security Info=True;User ID=uap;Password=uap"; string strGetTopOne = "select top 1 * from users "; /// <summary> /// 保存按钮事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { if (txtUserID.Text == "" || txtUserID.Text == string.Empty) { //新增 if (txtUserName.Text == "" || txtImagePath.Text == "") { MessageBox.Show("用户名和图片不能为空!"); return; } //这里看如何将图片保存到数据库的。 FileStream fs = File.OpenRead(txtImagePath.Text); byte[] imageb = new byte[fs.Length]; fs.Read(imageb, 0, imageb.Length); fs.Close(); string strSQL = "insert into Users(UserName,UserImage)values(@UserName,@UserImage)"; SqlConnection con = new SqlConnection(strConn); SqlCommand com3 = new SqlCommand(strSQL, con); com3.Parameters.Add("@UserName", SqlDbType.VarChar).Value = txtUserName.Text; com3.Parameters.Add("@UserImage", SqlDbType.Image).Value = imageb; if (com3.Connection.State == ConnectionState.Closed) com3.Connection.Open(); try { com3.ExecuteNonQuery(); MessageBox.Show("新增用户成功!"); } catch { MessageBox.Show("新增用户失败!"); } finally { com3.Connection.Close(); } } else { //修改 //这里看如何将图片保存到数据库的。 string strSQL = "update users set username=@UserName"; if (txtImagePath.Text != "") strSQL += ",userimage=@UserImage"; SqlConnection con = new SqlConnection(strConn); SqlCommand com3 = new SqlCommand(strSQL, con); com3.Parameters.Add("@UserName", SqlDbType.VarChar).Value = txtUserName.Text; if (txtImagePath.Text != "") { FileStream fs = File.OpenRead(txtImagePath.Text); byte[] imageb = new byte[fs.Length]; fs.Read(imageb, 0, imageb.Length); fs.Close(); com3.Parameters.Add("@UserImage", SqlDbType.Image).Value = imageb; } if (com3.Connection.State == ConnectionState.Closed) com3.Connection.Open(); try { com3.ExecuteNonQuery(); MessageBox.Show("修改用户成功!"); } catch { MessageBox.Show("修改用户失败!"); } finally { com3.Connection.Close(); } } } /// <summary> /// 下一位。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button4_Click(object sender, EventArgs e) { string preUserID = txtUserID.Text; LoadNextUser(); if (txtUserID.Text == preUserID) MessageBox.Show("已经是最后一位用户!"); } /// <summary> /// 清空。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { txtUserID.Text = ""; txtUserName.Text = ""; txtImagePath.Text = ""; pictureBox1.Image = null; } /// <summary> /// 选择图片。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btOpenImage_Click(object sender, EventArgs e) { openFileDialog1.Filter = "JPEG|*.jpg|GIF|*.gif"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { txtImagePath.Text = openFileDialog1.FileName; FileStream fs = File.OpenRead(txtImagePath.Text); byte[] imageb = new byte[fs.Length]; fs.Read(imageb, 0, imageb.Length); fs.Close(); MemoryStream memStream = new MemoryStream(imageb); try { Bitmap myimge = new Bitmap(memStream); this.pictureBox1.Image = myimge; } catch { } } } /// <summary> /// 从数据库中读取下一位用户的信息。如果参数为空则读取第一条信息。 /// </summary> /// <param name="PreUserID"></param> /// <returns></returns> public DataTable GetTopOneUser(string filter) { strGetTopOne = "select top 1 * from users "; if (filter != "" && filter != string.Empty) strGetTopOne += filter; SqlConnection con = new SqlConnection(strConn); SqlCommand com = new SqlCommand(strGetTopOne, con); if (con.State == ConnectionState.Closed) con.Open(); SqlDataAdapter da = new SqlDataAdapter(com); DataSet ds = new DataSet(); da.Fill(ds, "UserTable"); if (ds != null && ds.Tables.Count > 0) return ds.Tables[0]; else return null; } /// <summary> /// 加载下一位用户信息 /// </summary> public void LoadNextUser() { //这里看如何将数据库图片读出来 string filter =""; if (txtUserID.Text != "") filter = " where userid>" + txtUserID.Text; DataTable dt = GetTopOneUser(filter); if (dt.Rows.Count == 0) return; DataRow dr = dt.Rows[0]; txtUserID.Text = dr["UserID"].ToString(); txtUserName.Text = dr["UserName"].ToString(); byte[] imageb = (byte[])dr["UserImage"]; MemoryStream memStream = new MemoryStream(imageb); try { Bitmap myimge = new Bitmap(memStream); this.pictureBox1.Image = myimge; } catch { } } /// <summary> /// 加载上一位用户信息 /// </summary> public void LoadPreUser() { string filter = ""; if (txtUserID.Text != "") filter = " where userid<" + txtUserID.Text+" order by Userid desc"; DataTable dt = GetTopOneUser(filter); if (dt.Rows.Count == 0) return; DataRow dr = dt.Rows[0]; txtUserID.Text = dr["UserID"].ToString(); txtUserName.Text = dr["UserName"].ToString(); byte[] imageb = (byte[])dr["UserImage"]; MemoryStream memStream = new MemoryStream(imageb); try { Bitmap myimge = new Bitmap(memStream); this.pictureBox1.Image = myimge; } catch { } } /// <summary> /// 关闭。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button3_Click(object sender, EventArgs e) { this.Close(); } /// <summary> /// 上一位 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button5_Click(object sender, EventArgs e) { string preUserID = txtUserID.Text; LoadPreUser(); if (txtUserID.Text == preUserID) MessageBox.Show("已经是最前一位用户!"); } /// <summary> /// 帮助。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { help helper = new help(); helper.Show(); } } } 界面如下: 说明: 不用担心数据库能不能存放下你保存的图片,数据库可以存放2GB大的图片,可以远远满足你的要求。 源码下载: CODE 演示版:DEMO |
请发表评论