Рейтинг:
2
Jochen Arndt
Это зависит от того, хотите ли вы сохранить путь к файлу изображения или к самому изображению.
Путь хранится как любая другая строка.
Изображение должно храниться как BLOB (двоичный большой объект). Считайте файл изображения в byte
буферизуйте и храните это:
byte[] buffer = File.ReadAllBytes(filename);
// ...
oleDbCommand.Parameters.AddWithValue("@photo", buffer);
[РЕДАКТИРОВАТЬ]
Существует также ошибка в вашем заявлении об обновлении. Так и должно быть
"Update AllPrinting set qrimg=@qrimg where UserID=@UserID;"
вместо
"Update AllPrinting set qrimg=@qrimg where UserID=@UserID)"
[/РЕДАКТИРОВАТЬ]
ahmed_sa
я делаю как показано ниже но обновления не происходит
пожалуйста, помогите мне
byte [] buffer = файл.ReadAllBytes(путь);
Метод oledbconnection объекта oledbconnection = новый объект oledbconnection(подключение);
string str = " Update AllPrinting set qrimg=@qrimg where UserID=@UserID";
Объект oledbcommand объект oledbcommand = новый объект oledbcommand();
метод oledbconnection.Открыть();
объект oledbcommand.Подключении = подключения oledbconnection;
объект oledbcommand.Ул. свойства commandtext = ;
объект oledbcommand.Параметры.AddWithValue ("@UserID", label4. Text);
byte[] yourPhoto = буфер;
объект oledbcommand.Параметры.AddWithValue ("@qrimg", yourPhoto);
использование (oleDbConnection)
{
объект oledbcommand.Метод executenonquery();
}
метод oledbconnection.Закрывать();
Jochen Arndt
Есть сообщение об ошибке?
Ловите исключения для обнаружения ошибок и получения сообщений об ошибках (см. https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbexception (v=против 110). aspx).
Вы делаете обновление. Есть ли в вашей таблице столбец "qrimg" типа BLOB?
ahmed_sa
что тип большого двоичного объекта я не имею большого двоичного объекта тип я поставил колонки qrimg к DataType oleobject
кроме того, эти два столбца существуют в таблице AllPrinting
Jochen Arndt
BLOB-это тип объекта. Я просто спросил, чтобы быть уверенным.
А как насчет сообщения об ошибке?
ahmed_sa
я делаю так, чтобы поймать его не дать мне никакой ошибки
пожалуйста, помогите мне
Jochen Arndt
Извините, но у меня нет вашего кода или базы данных, и я не могу просматривать ваш экран.
Откуда вы знаете, что ничего не хранится?
Как вы проверяете, что ничего не обновляется?
ahmed_sa
да я проверяю пусто
Jochen Arndt
Когда ошибки нет, единственная причина, о которой я могу думать, - это то, что буфер пуст (файл.ReadAllBytes () терпит неудачу; например, потому, что файл не был найден).
Вы также можете обернуть весь свой код в блок try и перехватить любые исключения, чтобы убедиться, что все в порядке. Или используйте отладчик, чтобы пройти через ваш код и проверить данные.
ahmed_sa
http://www.mediafire.com/view/pwy2ccgc9lvg736/aaa.jpg
ahmed_sa
выше ссылка на мою таблицу в базе данных access
ahmed_sa
это экранная съемка
ahmed_sa
Я проверяю, что буфер равен нулю в отладчике, но путь имеет значение image bath
что я делаю сейчас
ahmed_sa
буфер равен нулю
Jochen Arndt
Тогда должно быть исключение или файл пуст.
ahmed_sa
изображение не пустое я проверяю
изображение имеет данные, потому что я показываю в отчете после добавления данных
ahmed_sa
проверьте съемку экрана отладчика
http://www.mediafire.com/view/ld88cr18xlz5cwq/imgenotnull.jpg
Jochen Arndt
Вы должны проверить его после того, как строка была обработана.
Это означает, что вы должны установить точку останова на следующей строке (или выполнить один шаг при достижении точки останова).
КСТАТИ:
Почему вы копируете буфер на свою фотографию?
Просто использовать
объект oledbcommand.Параметры.AddWithValue ("@qrimg", буфер);
или переименуйте буфер в yourPhoto.
ahmed_sa
я использую буфер вместо вашего фото не работает
Jochen Arndt
Последняя попытка:
Каковы свойства поля qrimg?
Это должно быть эффективно LONGBINARY.
ahmed_sa
как я это делаю я проверяю из базы данных nothing свойство с этим именем
Jochen Arndt
Первое изображение, которое вы опубликовали:
Выберите поле qrimg и проверьте настройки на вкладке Общие ниже.
ahmed_sa
Я меняю код на
пробовать
{
//byte [] buffer = файл.ReadAllBytes(путь);
byte[] buffer= ImageToBytes(pictureBox1. Image, ImageFormat.Jpeg);
Метод oledbconnection объекта oledbconnection = новый объект oledbconnection(подключение);
string str = " Update AllPrinting set qrimg=@qrimg where UserID=@UserID";
Объект oledbcommand объект oledbcommand = новый объект oledbcommand();
метод oledbconnection.Открыть();
объект oledbcommand.Подключении = подключения oledbconnection;
объект oledbcommand.Ул. свойства commandtext = ;
OleDbParameter param = новый OleDbParameter();
парам.OleDbType = OleDbType.Бинарные;
парам.Имяпараметра = "qrimg";
param. Value = буфер;
объект oledbcommand.Параметры.Добавить(парам);
Класса oledbparameter, параметр2 = новый класса oledbparameter();
параметр param2.OleDbType = OleDbType.Тип varchar;
параметр param2.Имяпараметра = "Идентификатор Пользователя";
параметр param2.Значение = label4.Текст;
объект oledbcommand.Parameters. Add (param2);
// объект oledbcommand.Параметры.AddWithValue ("@UserID", label4. Text);
// объект oledbcommand.Параметры.AddWithValue ("@qrimg", буфер);
использование (oleDbConnection)
{
объект oledbcommand.Метод executenonquery();
}
метод oledbconnection.Закрывать();
}
поймать (исключение бывший)
{
Ящик для сообщений.Показать (например, сообщение);
}
он обновляет поле qrimg, но отображается как
ниже экрана съемки
http://www.mediafire.com/view/6yqinw5uchnk3ln/longbinary.jpg
ahmed_sa
он показывает на поданных длинных двоичных данных qrimg
так что что это такое правильно добавлено или неправильно
он не открывается при щелчке
Jochen Arndt
Значит, есть данные (я на самом деле не могу открыть изображения)?
"он не открывается при щелчке"
Где вы нажимаете (в Access)?
Это нормально, потому что Access не знает, как интерпретировать данные. Это зависит от приложения, которое использует данные, чтобы узнать, что это такое (например, проверяя, является ли это допустимым форматом изображения).
ahmed_sa
можете ли вы помочь мне, пожалуйста
ahmed_sa
да я нажимаю на Открыть
ahmed_sa
это означает правильный или нет только один ответ
Jochen Arndt
Я вас здесь не понял.
Если сейчас в поле есть данные, все в порядке. Затем вы можете прочитать их из своего приложения и отобразить изображение.
ahmed_sa
Хорошо спасибо за ответ
большое вам спасибо за помощь