黑马程序员技术交流社区
标题:
数据空值制问题
[打印本页]
作者:
黑马李蒙
时间:
2013-4-16 21:26
标题:
数据空值制问题
SqlParameter("@Photo",DBNull.Value)存储到数据库Image提示nvarchar与image数据类型不匹配??
Employee()为Model,即Photo为表Employee中的一个字段
byte[] photo{get;set;}
Employee emp=new Employee();
if(photo==null)
{
return DBNull.Value;
}
else
{
return photo;
}
emp.Photo=photo;
ExecuteNonQuery("insert into Employee(Photo) values(@Photo)",new SqlParameter("@Photo",emp.Photo));
当执行插入语句,emp.Photo的值为DBNull.Value时提示:操作数类型冲突: nvarchar 与 image 不兼容;
emp.Photo的值不为空时,成功,求解?????????
数据库中Photo所对应字段为Image类型,C#中定义photo为byte[];
作者:
许庭洲
时间:
2013-4-17 06:23
1。 将数据库中的Image类型转换成byte[]类型
public byte[] SetImage(SqlDataReader reader)
{
return (byte[])reader["Image"];//Image为数据库中存放Image类型字段
}
2。 将byte[]转换成Image图像类型;
//加载以下命名空间using System.Drawing;/using System.IO;
using System.Data.SqlClient;*/
public Image Byte_Image(byte[] byte)
{
Image image;
MemoryStream memorystream = new MemoryStream(byte,0, byte.Length);
image = Image.FromStream(memorystream);
return image;
}
作者:
史鹏飞
时间:
2013-4-17 13:14
private void button1_Click(object sender, RoutedEventArgs e)
{
System.IO.FileStream fs = new System.IO.FileStream(@"C:\Users\fei\Pictures\IMG_20120621_212522.jpg",System.IO.FileMode.Open,System.IO.FileAccess.Read);
byte[] str = new byte[fs.Length];
fs.Read(str, 0, str.Length);
fs.Close();
InsertImage(str);
}
private void InsertImage(byte[] str)
{
string constr = ConfigurationManager.ConnectionStrings["connstr"].ToString();
using (SqlConnection conn = new SqlConnection(constr))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText="insert into ImageTable(photo) values(@ImageValue)";
SqlParameter par = new SqlParameter("@ImageValue", System.Data.SqlDbType.Image);
par.Value = str;
cmd.Parameters.Add(par);
if (cmd.ExecuteNonQuery() > 0)
{
MessageBox.Show("插入成功!");
}
}
}
可以用这个代码试一下,我自己写的试了一下是可以的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2