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文件
大约 2 年之前 回复
confina
confina 回复confina:上面这两句是截图时图片的保存地址 textboxzddrs是我自己填的地址 例如我只填了一个7 就会保存在debug中一个7.bmp的图片
大约 2 年之前 回复
confina
confina 回复confina:上面这两句是截图时图片的保存地址 textboxzddrs是我自己填的地址 例如我只填了一个7 就会保存在debug中一个7.bmp的图片
大约 2 年之前 回复
confina
confina camera.snapPath = textBoxSnapAddrs.Text + @".bmp"; camera.GrabImage();
大约 2 年之前 回复
xchchen
xchchen   2016.04.27 15:25

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

confina
confina 这是程序运行时自己输入的 就是在输入地址 现在运用到这里就不是地址了吗
大约 2 年之前 回复
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前
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使用html2canvas截屏,利用itextpdf转为pdf保存到数据库
项目里的一个需求,需要将html转为pdf保存到远程FTP服务器和数据库 解决方案:使用html2canvas截取页面元素,类似截图的效果,再利用itextpdf转为pdf保存到数据库。 优点:支持中文(也想过使用其他的插件,如jsPDF等插件,可是不支持中文,可惜了);容易上手 缺点:html2canvas截图的缺点就是,不够清晰,这点不是很满意; html2canvas 这个就
asp.net(C#) 上传Execl文件 并插入数据到数据库实例
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.W
使用Js和C#实现截图,并保存到服务器
前端页面主要使用jquery对指定目录下的图片进行裁剪部分的选择,然后将所需数据传到后台利用C#的GDI+技术切图、保存。而且注释写的很清楚,几乎每一行都有注释。如有疑问,可以和我联系,很高兴对功能的不断完善
html2canvas 截屏后上传到服务器端(springmvc3)
利用html2canvas截屏后可以生成base64类型的图片,但是这样的图片很明显不能被引用或者被SNS工具来分享。这样就必须截屏后再上传数据到后台服务器端重新保存。 前端js代码: $("#saveImage").click(function() { html2canvas($('#mypics'), { onre
html2canvas截屏传入后台
--> /supervision/html2canvas-master/dist/html2canvas.js"> --%> /supervision/html2canvas-master/tests/assets/jquery-1.6.2.js"> --%> /supervision/html2canvas
Unity+NGUI实现截图加上传
IEnumerator CaptureScreenshot2(Rect rect) { // 先创建一个的空纹理,大小可根据实现需要来设置 Texture2D screenShot = new Texture2D(Screen.width, Screen.height/*, TextureFormat.RGB24, false*/); c
c#客户端图片上传到服务器端文件并且把路径保存到SQL数据库
<br />//这是一个上传图片的例子,上传其他文件都一样 <br />string strFileFullName = System.IO.Path.GetFileName(this.FileUpload1.PostedFile.FileName);<br />        if (strFileFullName.Length > 0)<br />        {<br />            if (FileUpload1.HasFile)<br />            {<br />   
Android手机截屏并上传到电脑
前一段时间受不了某流氓手机助手,给卸载了,现在手机截屏 是个问题,虽说有些开发工具可以截屏,但是不方便,就萌发了写个脚本截屏的想法。 脚本使用window echo命令编写。所以只可运行在window系统上。代码如下: @echo off set name=Android%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:
文件上传控件Fileupload(实现文件上传并写入数据库)
Fileupload实现文件上传并写入数据库
Unity3d 截屏并上传到服务器
最近项目所需,需要捕抓图像并上传到服务器。 参考了别人的文章,加以改动。 写此博客以记录。 参考博客 设置全局变量 public Camera cutFrameCamer; Rect canvas; 开始截图 canvas.Set(0, 0, Screen.width, Screen.height);//设置画布大小等于当前屏幕的宽和高。 CaptureScre