cn=new SqlConnection(Constr);
cn.Open();
MemoryStream ms=new MemoryStream();
this.pictureBox1.Image.Save(ms,ImageFormat.Jpeg);
byte[] imageBody=ms.ToArray(); string sqlstr="Insert into ImageTable (ImageName,ImageBody,ImageSize) values(@ImageName,@ImageBody,'"+imageBody.Length+"')";
try
{
cm=new SqlCommand(sqlstr,cn);
cm.Parameters.Add("@ImageBody", SqlDbType.Image);
cm.Parameters.Add("@ImageName", SqlDbType.NVarChar);
cm.Parameters["@ImageBody"].Value = imageBody;
cm.Parameters["@ImageName"].Value = this.pictureBox1.Tag.ToString();
cm.ExecuteNonQuery();
cm.Dispose();
MessageBox.Show("上传成功!");
}
catch(Exception er)
{
MessageBox.Show(er.Message);
}
cn.Close();
cn.Dispose();
建表语句如下:
create table ImageTable( id bigint identity(1,1) not null,ImageName varchar(20), ImageBody image,ImageSize nvarchar(20)) 提示问题是:将截断字符串或二进制数据。
请教高手如何解决问题。比较急,在线等.50分起,不够在加!
QQ1902157
cn.Open();
MemoryStream ms=new MemoryStream();
this.pictureBox1.Image.Save(ms,ImageFormat.Jpeg);
byte[] imageBody=ms.ToArray(); string sqlstr="Insert into ImageTable (ImageName,ImageBody,ImageSize) values(@ImageName,@ImageBody,'"+imageBody.Length+"')";
try
{
cm=new SqlCommand(sqlstr,cn);
cm.Parameters.Add("@ImageBody", SqlDbType.Image);
cm.Parameters.Add("@ImageName", SqlDbType.NVarChar);
cm.Parameters["@ImageBody"].Value = imageBody;
cm.Parameters["@ImageName"].Value = this.pictureBox1.Tag.ToString();
cm.ExecuteNonQuery();
cm.Dispose();
MessageBox.Show("上传成功!");
}
catch(Exception er)
{
MessageBox.Show(er.Message);
}
cn.Close();
cn.Dispose();
建表语句如下:
create table ImageTable( id bigint identity(1,1) not null,ImageName varchar(20), ImageBody image,ImageSize nvarchar(20)) 提示问题是:将截断字符串或二进制数据。
请教高手如何解决问题。比较急,在线等.50分起,不够在加!
QQ1902157
ImageName varchar(20),
这两句话冲突了
如果这段程序和数据库不在同一台机器的话,超过8000字符的sql命令语句会被系统截断。替换方式,把这段Insert语句放到存储中来实现,即用存储包一层来替换直接使用Insert命令。