2 confina confina 于 2016.04.27 12:13 提问

c# 截图并传到数据库 但错误找不到文件 1C

如下图程序 我运行到这里时可以截图 并且能够保存早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#   好多东西不太懂

5个回答

hjnth
hjnth   2016.04.27 12:43

你看一下你的文件名是否为:textBoxSnapAddrs.Text.bmp
因为你在程序中有这行代码:
FileStream fs = new FileStream(@"textBoxSnapAddrs.Text.bmp", FileMode.Open);

confina
confina 我在debug中看到了 7.bmp文件 但执行到这一句FileStream fs = new FileStream(@"textBoxSnapAddrs.Text.bmp", FileMode.Open);时说不能再debug中找到7.bmp文件
一年多之前 回复
confina
confina 回复confina:上面这两句是截图时图片的保存地址 textboxzddrs是我自己填的地址 例如我只填了一个7 就会保存在debug中一个7.bmp的图片
一年多之前 回复
confina
confina 回复confina:上面这两句是截图时图片的保存地址 textboxzddrs是我自己填的地址 例如我只填了一个7 就会保存在debug中一个7.bmp的图片
一年多之前 回复
confina
confina camera.snapPath = textBoxSnapAddrs.Text + @".bmp"; camera.GrabImage();
一年多之前 回复
xchchen
xchchen   2016.04.27 15:25

FileStream fs = new FileStream(@"textBoxSnapAddrs.Text.bmp", FileMode.Open); "textBoxSnapAddrs.Text.bmp" 这里只是个字符串,并不是文件的路径名称.

confina
confina 这是程序运行时自己输入的 就是在输入地址 现在运用到这里就不是地址了吗
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.27 14:22

运行shell脚本提示找不到该文件的错误,解决办法
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

xiaozheyou
xiaozheyou   2016.04.27 22:35

保存二进制 最好不要用sql 的形式进行插入保存
最好使用参数 或者存储过程的形式保存 否则中间保存过程sql 会以字串的形式写入 直接阶段二进制字串

hjnth
hjnth   2016.05.10 22:27

应该是你的文件名写错了,你可以定义一个文件路径变量,在其他地方直接调用该变量即可:

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("保存失败!");
        }
hjnth
hjnth 把变量t的定义写到using前
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!