多列图文混合,二进制流方式写入及更新到数据库
private void button1_Click(object sender, EventArgs e)
{
int a = DBInsert(textBox1.Text, richTextBox1, richTextBox2);
if (a > 0)
{
MessageBox.Show("写入成功");
}
}
//带二进制参数插入数据库,用到了数据库存储过程
public static int DBInsert(string parameter1, RichTextBox richText1,RichTextBox richText2)
{
int returnResult = 0; //初始化返回结果
Byte[] array_richText1;//定义两个参数内容数组
Byte[] array_richText2;
//使用 创建内存流
using (MemoryStream savefilestream = new MemoryStream())
{
richText1.SaveFile(savefilestream, RichTextBoxStreamType.RichText);
array_richText1 = savefilestream.ToArray();
richText2.SaveFile(savefilestream, RichTextBoxStreamType.RichText);
array_richText2 = savefilestream.ToArray();
}
//SQL 语句
//string cmdsql1 = string.Format("insert into 表1(字段1,字段2,字段3)values('测试',@字段2,@字段3)");//这样写 也行
string cmdsql1 = string.Format("insert into 表1(字段1,字段2,字段3)values(@字段1,@字段2,@字段3)");
//更新语句,更新方法和插入方法只有这里不一样。
//string cmdsql1 = string.Format("update 表1 set 字段1=@字段1,字段2=@字段2,字段3=@字段3 where ID={0}",IDrow) ;
using (OleDbConnection conn = new OleDbConnection(connStr))//连接字符串
{
using (OleDbCommand comm = new OleDbCommand(cmdsql1, conn))
{
conn.Open();
//parameters的作用就是把存储过程 执行结束后得到参数传到程序里。
comm.Parameters.Add("@字段1", OleDbType.VarChar,100).Value = parameter1;
comm.Parameters.Add("@字段2", OleDbType.Binary, array_richText1.GetLength(0)).Value = array_richText1;
comm.Parameters.Add("@字段3", OleDbType.Binary, array_richText2.GetLength(0)).Value = array_richText2;
returnResult = comm.ExecuteNonQuery();
}
conn.Close();
}
return returnResult;
}