如下图程序 我运行到这里时可以截图 并且能够保存早debug中 但当我调试到吧图片转换为二进制流是就出错
错误是找不到这个问件 但我去debug 中看是有这个文件的啊
private void buttonSnap_Click(object sender, EventArgs e)
{
if(textBoxSnapAddrs.Text != null)
{
camera.snapPath = textBoxSnapAddrs.Text + @".bmp";
camera.GrabImage();
FileStream fs = new FileStream(@"textBoxSnapAddrs.Text.bmp", FileMode.Open);
Byte[] by = new byte[fs.Length];
fs.Read(by, 0, Convert.ToInt32(fs.Length));
fs.Close();
using (SqlConnection conn = new SqlConnection(con))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into patient(p_image) values(@textBoxSnapAddrs.Text.bmp)";
SqlParameter par = new SqlParameter("@textBoxSnapAddrs.Text.bmp", SqlDbType.Image);
par.Value = by;
cmd.Parameters.Add(par);
int t = (int)(cmd.ExecuteNonQuery());
conn.Close();
}
MessageBox.Show("保存成功!");
求大神解答 我刚刚学c# 好多东西不太懂
你看一下你的文件名是否为:textBoxSnapAddrs.Text.bmp
因为你在程序中有这行代码:
FileStream fs = new FileStream(@"textBoxSnapAddrs.Text.bmp", FileMode.Open);
FileStream fs = new FileStream(@"textBoxSnapAddrs.Text.bmp", FileMode.Open); "textBoxSnapAddrs.Text.bmp" 这里只是个字符串,并不是文件的路径名称.
保存二进制 最好不要用sql 的形式进行插入保存
最好使用参数 或者存储过程的形式保存 否则中间保存过程sql 会以字串的形式写入 直接阶段二进制字串
应该是你的文件名写错了,你可以定义一个文件路径变量,在其他地方直接调用该变量即可:
string picPath = textBoxSnapAddrs.Text + @".bmp";
代码修改之后为:
private void buttonSnap_Click(object sender, EventArgs e)
{
if(textBoxSnapAddrs.Text != null)
{
string picPath = textBoxSnapAddrs.Text + @".bmp";//新加
camera.snapPath = picPath;//修改
camera.GrabImage();
FileStream fs = new FileStream(picPath, FileMode.Open);//修改
Byte[] by = new byte[fs.Length];
fs.Read(by, 0, fs.Length);//修改
fs.Close();
using (SqlConnection conn = new SqlConnection(con))
{
SqlCommand cmd = conn.CreateCommand();//新加
cmd.CommandText = "insert into patient(p_image) values(@textBoxSnapAddrs);";//修改
SqlParameter par = new SqlParameter("@textBoxSnapAddrs", SqlDbType.Image, by);//修改
cmd.Parameters.Add(par);
conn.Open();//新加
int t = (int)(cmd.ExecuteNonQuery());
conn.Close();
}
if(t > 0)
{
MessageBox.Show("保存成功!");
}
else
{
MessageBox.Show("保存失败!");
}