Ошибки при сохранении изображений в базу данных - PullRequest
0 голосов
/ 23 марта 2012

У меня есть OpenFileDialog, который предполагает выбрать фотографию и сохранить ее в базе данных но проблема в том, когда я получаю доступ к классу, когда результат диалога openFileDialog в порядке он говорит, что no such table : PhotoFile когда вызывается функция SavePhoto со следующими аргументами:

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 ]

5 голосов
/ 23 марта 2012

Это не имеет ничего общего с OpenFileDialog per se , это ваш SQL-запрос, который проваливается и утверждает, что таблица не существует (Photofile) - поэтому я хотел бы предположить, что она не 't и вам следует либо проверить имя таблицы, либо создать ее, если необходимо.

Кроме этого, существует озабоченность по поводу вашего запроса: ваш метод показывает, что фотография будет сохранена , но выиспользуйте DELETE.Кроме того, если таблица существует / когда вам удастся правильно отсортировать имя таблицы, я бы посоветовал вам не использовать строки в качестве идентификаторов.Нет сохранение происходит в любом месте.

1 голос
/ 23 марта 2012

Ваш AppMain.ConnectionString указывает на неправильную базу данных, которая не содержит таблицы PhotoTable.Возможно, вы захотите проверить его еще раз.

Ваш код, кстати, удаляет запись, соответствующую указанному PhotoID, он ничего не сохраняет в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...