C# 图片或PDF保存到SQL Server数据库
数据库字段如下:图片保存要用image数据类型
保存到数据库的两种方式:
OpenFileDialog openFileDialog = new OpenFileDialog ( ) ; if ( openFileDialog. ShowDialog ( ) == DialogResult. Cancel) { return ; } FileStream fs = new FileStream ( path, FileMode. Open, FileAccess. Read) ; BinaryReader br = new BinaryReader ( fs) ; byte [ ] img = br. ReadBytes ( Convert. ToInt32 ( fs. Length) ) ; string insert = "insert into T_Img(ID,Img) values(@ID,@Img)" ; SqlParameter[ ] parameter = new SqlParameter[ ] { new SqlParameter ( "@ID" , Convert. ToInt32 ( textBox1. Text) ) , new SqlParameter ( "@Img" , img) } ; db. ExcuteBySqlParmeter ( insert, parameter) ; string sql = "select top 0 * from T_Img" ; DataSet ds = db. LoadDataSetBySql ( sql) ; DataTable dtImg = ds. Tables[ 0 ] ; DataRow dr = dtImg. NewRow ( ) ; dr[ "ID" ] = Convert. ToInt32 ( textBox1. Text) ; dr[ "Img" ] = img; dtImg. Rows. Add ( dr) ; db. SaveImg ( dtImg, "T_Img" ) ;
上面的ExcuteBySqlParmeter()和SaveImg()方法的详细代码如下:
public int ExcuteBySqlParmeter ( string sql, SqlParameter[ ] sqlParmeter)
{ int ir = 0 ; try { SqlCommand comm = new SqlCommand ( sql, GetConn ( ) ) ; comm. Parameters. AddRange ( sqlParmeter) ; ir = comm. ExecuteNonQuery ( ) ; CloseConn ( ) ; } catch { ir = 0 ; } return ir;
} public int SaveImg ( DataTable dataTable, string TableName)
{ int ir; try { SqlBulkCopy bulkCopy = new SqlBulkCopy ( GetConn ( ) ) ; bulkCopy. DestinationTableName = TableName; bulkCopy. WriteToServer ( dataTable) ; ir = 1 ; } catch { ir = 0 ; } return ir;
}
从数据库读取图片并显示
private void GetImg ( )
{ string sql = $"select top 1 * from T_Img where ID = { textBox1. Text } " ; DataSet ds = db. LoadDataSetBySql ( sql) ; DataRow dr = ds. Tables[ 0 ] . Rows[ 0 ] ; byte [ ] bytes = ( byte [ ] ) dr[ "Img" ] ; MemoryStream ms = new MemoryStream ( bytes) ; this . pictureBox2. Image = Image. FromStream ( ms) ;
}