none
Как изменить запись в базе данных C# UPDATE RRS feed

  • Вопрос

  •  private void button1_Click(object sender, EventArgs e)
            {
                /***************************************************** 
                * На диске C:\ находится база данных Microsoft Access 2007
                * В базе данных одна таблица. Название таблицы: tab.
                * Поля:
                * id - Счетчик
                * image - Поле объекта OLE
                * В папке `Мои рисунки` находится файл Alien 1.bmp, который будем вставлять в БД.
                *******************************************************/
                OleDbConnection oleDbConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db.mdb");  //Подключение к БД.

                OpenFileDialog openFileDialog1 = new OpenFileDialog();

                openFileDialog1.InitialDirectory = "c:\\";
                openFileDialog1.Filter = "jpg files (*.jpg)|*.txt|All files (*.*)|*.*";
                openFileDialog1.FilterIndex = 2;
                openFileDialog1.RestoreDirectory = true;

                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    string filebrous = openFileDialog1.FileName;
                    label1.Text = filebrous; // путь загружаемого файла
                    Bitmap image1 = new Bitmap(filebrous);

                    OleDbCommand oleDbCommand = new OleDbCommand("INSERT INTO `Tab` ( `image` ) VALUES ( ? ) ", oleDbConnection);         //Запрос на вставку
                    OleDbParameter oleDbParameter = new OleDbParameter("image", OleDbType.VarBinary);                                     //Параметр запроса
                                                                                                                                          //  string fileName = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + @"\136.jpg";                  //Путь к файлу
                                                                                                                                          //  string fileName = filebrous;
                    string fileName = filebrous;
                    Image image = Image.FromFile(fileName);//Изображение из файла.
                    label1.Text = fileName;
                    MemoryStream memoryStream = new MemoryStream();                                                                       //Поток в который запишем изображение
                    image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);                                                     //Сохраняем изображение в поток.
                    oleDbParameter.Value = memoryStream.ToArray();                                                                        //Устанавливаем значение параметра
                    oleDbCommand.Parameters.Add(oleDbParameter);                                                                          //Добавляем параметр
                    oleDbConnection.Open();                                                                                               //Открываем соединение с БД
                    oleDbCommand.ExecuteNonQuery();                                                                                       //Выполняем запрос.
                    oleDbConnection.Close();                                                                                              //Закрываем соединение
                    memoryStream.Dispose(); //Освобождаем память занятую изображением.   


                }



            }

            private void button2_Click(object sender, EventArgs e)
            {
                /***************************************************** 
            * На диске C:\ находится база данных Microsoft Access 2007
            * В базе данных одна таблица. Название таблицы: tab.
            * Поля:
            * id - Счетчик
            * image - Поле объекта OLE
            * В папке `Мои рисунки` находится файл Alien 1.bmp, который будем вставлять в БД.
            *******************************************************/
                OleDbConnection oleDbConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db.mdb"); //Создаем подключение
                OleDbCommand oleDbCommand = new OleDbCommand("SELECT image FROM Tab WHERE id = 1", oleDbConnection);                 //Запрос на выборку
                oleDbConnection.Open();                                                                                              //Открываем соединение   
                OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader();                                                      //Делаем выборку

                if (oleDbDataReader.HasRows)                                                                                         //Проверяем есть ли в выборке строки
                {
                    MemoryStream memoryStream = new MemoryStream();                                                                  //Создаем поток, в котором будем хранить изображение         
                    foreach (DbDataRecord record in oleDbDataReader)                                                                 //Цикл для всех записей, полученных в результате выборки
                        memoryStream.Write((byte[])record["image"], 0, ((byte[])record["image"]).Length);                            //Пишем в поток
                    Image image = Image.FromStream(memoryStream);//Получаем изображение из потока
                    pictureBox1.Image = image;
                 //   image.Save(@"D:\136.jpg");                                                                                     //Сохраняем изображение на диск C:\
                    memoryStream.Dispose();  //Освобождаем память

                }
                else
                    Console.Write("Запрос вернул ноль строк");                                                                       //Вывод сообщения
                oleDbConnection.Close();                                                                                             //Закрываем соединение с БД.
            }

    Это добавления и вывод в pictureBox1, как сделать изменения?

                    
    16 марта 2017 г. 12:09

Ответы

  •                 OleDbCommand oleDbCommand = new OleDbCommand("UPDATE `tab` SET `image` =  ?  WHERE id = 1", oleDbConnection);         //Запрос на вставку
                    OleDbParameter oleDbParameter = new OleDbParameter("'image'", OleDbType.VarBinary);    

    Нашел решения,теперь все работает.

    21 марта 2017 г. 8:33

Все ответы

  •  OleDbCommand oleDbCommand = new OleDbCommand("UPDATE tab SET ('image') = '?' WHERE id = 1", oleDbConnection);         //Запрос на вставку
                    OleDbParameter oleDbParameter = new OleDbParameter("image", OleDbType.VarBinary);  

    Пытаюсь сделать так ,но пишет что ошибка в запросе.


    16 марта 2017 г. 12:10
  • может просто надо без кавычек писать:

    UPDATE tab SET (image) = ? WHERE id = 1

    16 марта 2017 г. 13:24
  • может просто надо без кавычек писать:

    UPDATE tab SET (image) = ? WHERE id = 1

    Не помогает все равно выдает ошибку.

    21 марта 2017 г. 6:38
  •                 OleDbCommand oleDbCommand = new OleDbCommand("UPDATE `tab` SET `image` =  ?  WHERE id = 1", oleDbConnection);         //Запрос на вставку
                    OleDbParameter oleDbParameter = new OleDbParameter("'image'", OleDbType.VarBinary);    

    Нашел решения,теперь все работает.

    21 марта 2017 г. 8:33
  • Спасибо, что отписались с найденым решением :)

    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    21 марта 2017 г. 11:06
    Модератор