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

时间:2012-03-23 16:11:26

标签: c# .net winforms

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

TODO(P J):在此处输入值

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

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表单并在dialog result = ok时触发该函数,但是当我使用openFileDialog时,它总是产生如上所述的错误。

2 个答案:

答案 0 :(得分:5)

这与OpenFileDialog 本身没有任何关系,这是你的SQL查询失败并说明该表不存在(Photofile) - 所以我建议它没有,您应该检查您的表名,或者在必要时创建它。

除此之外,您的查询仍然存在问题:您的方法表示照片将保存但您使用的是DELETE。此外,如果表确实存在/当您设法正确排序表名时,我建议您不要使用字符串作为标识符。 保存在任何地方都没有。

答案 1 :(得分:1)

您的AppMain.ConnectionString指向错误的数据库,该数据库不包含任何PhotoTable表。您可能需要仔细检查它。

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