Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将图像保存到数据库时出错_C#_.net_Winforms - Fatal编程技术网

C# 将图像保存到数据库时出错

C# 将图像保存到数据库时出错,c#,.net,winforms,C#,.net,Winforms,我有一个OpenFileDialog,它会选择photo并将其保存到数据库中 但问题是,当我在openFileDialog的对话框结果正常时访问该类 当使用以下参数调用SavePhoto函数时,表示没有这样的表:PhotoFile: TODO(pj):在此处输入值 这就是我到目前为止所尝试的 OpenFileDialog d = new OpenFileDialog(); d.Filter = ("JPEG Imange (*.jpg|*.jpg|PNG Image (*.pn

我有一个OpenFileDialog,它会选择photo并将其保存到数据库中 但问题是,当我在openFileDialog的对话框结果正常时访问该类 当使用以下参数调用SavePhoto函数时,
表示没有这样的表:PhotoFile

TODO(pj):在此处输入值

这就是我到目前为止所尝试的

OpenFileDialog d = new OpenFileDialog();

        d.Filter = ("JPEG Imange (*.jpg|*.jpg|PNG Image (*.png)|All Files*.*");
        if ((d.ShowDialog()) == DialogResult.OK)
        {
           SavePhoto(txtID.text,d.fileName);
        }
下面是函数的代码

        try {
        using (SQLite.SQLiteConnection SQLConnect = new SQLite.SQLiteConnection(g_constring)) {
            byte[] photo = FileImageToByte(PhotoFile);
            SQLConnect.Open();
            if (SQLConnect.State == ConnectionState.Open) {
                SQLiteCommand SQLcommand = new SQLiteCommand(SQLConnect);
                SQLcommand = SQLConnect.CreateCommand;
                SQLcommand.CommandText = "DELETE FROM PhotoFile WHERE PhotoID = '" + PhotoId + "'";
                SQLcommand.ExecuteNonQuery();
                SQLcommand.Parameters.Clear();

                SQLcommand.CommandText = "INSERT INTO PhotoFile(PhotoID, Photo) VALUES(@EmployeeID, @Photo1)";

                SQLiteParameter SQLparmID = new SQLiteParameter("@EmployeeID", PhotoId);
                SQLparmID.DbType = DbType.String;
                SQLparmID.Value = PhotoId;
                SQLcommand.Parameters.Add(SQLparmID);

                SQLiteParameter SQLparm = new SQLiteParameter("@Photo1", photo);
                SQLparm.DbType = DbType.Binary;
                SQLparm.Value = photo;
                SQLcommand.Parameters.Add(SQLparm);

                SQLcommand.ExecuteNonQuery();

                bReturn = true;
            } else {
                bReturn = false;
            }
        }
    } catch (System.Exception eX) {
        MessageBox.Show(eX.Message.ToString(), "Error in database", MessageBoxButtons.OK, MessageBoxIcon.Error);
        bReturn = false;
    }
    return bReturn;
}

PhotoFile表存在于我的数据库中事实上我已经尝试了Windows窗体,如果对话框结果=ok,则触发该函数,但当我使用openFileDialog时,它总是产生如上所述的错误。

这与openFileDialog本身无关,这是因为SQL查询失败并声明表不存在(
Photofile
)-因此我建议它不存在,您应该检查表名,或者在必要时创建表名


除此之外,您的查询还有一个问题:您的方法指示将保存一张照片,但您使用了
删除
。此外,如果表确实存在/当您成功地对表名进行正确排序时,我建议您不要使用字符串作为标识符。任何地方都不会进行保存。

这与OpenFileDialog本身无关,这是因为SQL查询失败并声明表不存在(
Photofile
)-因此我建议它不存在,您应该检查表名,或者在必要时创建表名


除此之外,您的查询还有一个问题:您的方法指示将保存一张照片,但您使用了
删除
。此外,如果表确实存在/当您成功地对表名进行正确排序时,我建议您不要使用字符串作为标识符。任何地方都没有保存。

您的
AppMain.ConnectionString
指向错误的数据库,该数据库不包含任何
PhotoTable
表。你可能想再检查一遍


您的代码删除了与提供的
PhotoID
匹配的记录。顺便说一下,它不会将任何内容保存到数据库中。

您的
AppMain。ConnectionString
指向错误的数据库,该数据库不包含任何
PhotoTable
表。你可能想再检查一遍



您的代码删除了与提供的
PhotoID
匹配的记录顺便说一句,它不会将任何内容保存到数据库中。

这与OpenFileDialog有什么关系?看起来SavePhoto的某个特定参数导致了错误,而OpenFileDialog本身没有问题。您确定问题不在函数中吗?应用程序到底在哪里中断?只是想知道为什么
SavePhoto()
方法实际上会从
sql查询中
删除?当您从
OpenFileDialog
返回时
d.FileName
的值是多少?这应该是完整的路径名(即“c:\myapp\photos\myphoto.jpg”)。这和你在Windows窗体应用程序中得到的值相同吗?我忘了发布更新的代码对不起,我的错。。如果id已经存在于数据库中,则删除该照片。这与OpenFileDialog有何关系?看起来SavePhoto的某个特定参数导致了错误,而OpenFileDialog本身没有问题。您确定问题不在函数中吗?应用程序到底在哪里中断?只是想知道为什么
SavePhoto()
方法实际上会从
sql查询中
删除?当您从
OpenFileDialog
返回时
d.FileName
的值是多少?这应该是完整的路径名(即“c:\myapp\photos\myphoto.jpg”)。这和你在Windows窗体应用程序中得到的值相同吗?我忘了发布更新的代码对不起,我的错。。如果id已经存在于数据库中,则删除该照片。或者检查连接字符串。@NickGotch如果连接字符串不正确,则OP应该会收到连接错误,除非他们连接到错误的数据库。如果他没有指定数据库,例如,它正在查看主数据库,或者它是空的,或者代码运行的用户没有查看表的权限…@NickGotch我不确定是否使用SQLite,但是除了示例的第一个实例之外,对于大多数数据库引擎中的实例,它们应该会得到明显的*错误*虽然有些可能隐藏了实际含义。明显的错误是没有这样的表,为什么没有另一个球赛。或者检查连接字符串。@NickGotch如果连接字符串不正确,OP应该得到连接错误,除非他们连接到错误的数据库。如果他没有指定数据库,例如,它正在查看master,或者它是空的,或者代码正在运行的用户没有查看表的权限…@NickGotch好吧,我不确定是否使用SQLite,但是除了您的示例的第一个实例之外,对于大多数数据库引擎中的实例,它们应该会出现明显的*错误*虽然有些人可能隐藏了真正的意思。明显的错误是没有这样的表,为什么没有另一场球赛呢。