pb和.net的问题
sql数据库里面有个字段是image形式的,它保存图片,是用pb写进去的,现在想用.net读取,但是失败,请看代码:
string sql = "select idiograph from sys_user_idiograph where user_no=5";
string strconn = ConfigurationManager.AppSettings["MyConn"].ToString();
SqlConnection oraConn = new SqlConnection(strconn);
SqlCommand oraComm = new SqlCommand(sql, oraConn);
oraConn.Open();
byte[] fileData = (byte[])oraComm.ExecuteScalar();
//Response.ContentType = "application/jpeg";
Response.ContentType = "image/jpeg";
Response.BinaryWrite(fileData);
Response.End();
oraConn.Close();
请高手指点,另外,如果是用.net写入数据库的话,再用.net读取 是可以读的,请问pb操作二进制难道和.net有区别?
.net写入数据库的代码是:
protected void Button1_Click(object sender, EventArgs e)//上传路径到数据库
{
string imagepath = Server.MapPath("image/tongdengquan.jpg");
byte[] idiograph = GetPictureData(imagepath);
string sql = "insert into sys_user_idiograph(user_no,logid,username,idiograph) values(@user_no,@logid,@username,@idiograph)";
string strconn = ConfigurationManager.AppSettings["MyConn"].ToString();
SqlConnection oraConn = new SqlConnection(strconn);
SqlCommand oraComm = new SqlCommand(sql, oraConn);
oraComm.Parameters.Add("@user_no", SqlDbType.Char);
oraComm.Parameters["@user_no"].Value = "8";
oraComm.Parameters.Add("@logid", SqlDbType.Char);
oraComm.Parameters["@logid"].Value = "333";
oraComm.Parameters.Add("@username", SqlDbType.VarChar);
oraComm.Parameters["@username"].Value = "童灯犬";
oraComm.Parameters.Add("@idiograph", SqlDbType.Image);
oraComm.Parameters["@idiograph"].Value = idiograph;
oraConn.Open();
oraComm.ExecuteNonQuery();
oraConn.Close();
}
public byte[] GetPictureData(string imagepath)
{
//根据图片文件的路径使用文件流打开,并保存为byte[]
FileStream fs = new FileStream(imagepath, FileMode.Open);//可以是其他重载方法
byte[] byData = new byte[fs.Length];
fs.Read(byData, 0, byData.Length);
fs.Close();
return byData;
}
[解决办法]
gz.
没试过, 但认为问题不在image字段的内容上。
比较一下存入前和取出后的二进制数据length 一样么?是不是有差异啊。