ASP.NET把图片存入数据库和使用文件流读取显示(2)
传递参数
1.SqlServer数据库。SqlServer有Image字段类型,最大可以存储2G的数据。
Code
byte[] fileData = this.FileUpload1.FileBytes;
string sql = "insert into t_img(img) values (@img)";
string strconn = System.Configuration.ConfigurationManager.ConnectionStrings["fengdongDB"].ToString();
SqlConnection sqlConn = new SqlConnection(strconn);
SqlCommand sqlComm = new SqlCommand(sql, sqlConn);
sqlComm.Parameters.Add("@img", SqlDbType.Image);//添加参数
sqlComm.Parameters["@img"].Value = fileData;//为参数赋值
sqlConn.Open();
sqlComm.ExecuteNonQuery();
sqlConn.Close();
2.Oracle数据库。在Oracle数据库中我们可以使用BLOB字段类型,最大可以存储4G的数据。
Code
byte[] fileData = this.FileUpload1.FileBytes;
string sql = "insert into t_img(imgid,IMGDATA) values(100,:IMGDATA)";
string strconn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringForOracle"].ToString();
OracleConnection oraConn = new OracleConnection(strconn);
OracleCommand oraComm = new OracleCommand(sql, oraConn);
oraComm.Parameters.Add(":IMGDATA", OracleType.Blob);//添加参数
oraComm.Parameters[":IMGDATA"].Value = fileData;//为参数赋值
oraConn.Open();
oraComm.ExecuteNonQuery();
oraConn.Close();
注意:这里我需要说明一下,用Oracle的专用连接传递参数的时候你要小心一点,看看上面的SQL语句你就会知道,要在参数名前加个“:”否则就会出现下面的错误“OracleException: orA-01036: 非法的变量名/编号”。这里需要我们注意一下。另外还有一个地方,当我引用System.Data.OracleClient命名空间的时候默认是没有的,必须添加对System.Data.OracleClient的引用,我记得在VS2003下如果安装了OracleClient是不用添加引用就可以引入的。这里也要留意一下。