Вставка картинки в базу mysql (c# odbc)

программирование MySQL net

Пытаюсь научиться вставлять картинки в базу (c#, odbc,mysql), пишу такой код:

OpenFileDialog openFileDialog1 = new OpenFileDialog();
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
if((myStream = openFileDialog1.OpenFile())!= null);
}
byte[] buf = new byte[myStream.Length];
myStream.Read(buf, 0, (int)myStream.Length);
myStream.Close();
OdbcConnection sqlConnection1 = new OdbcConnection(MyConString);

String insertCmd = "INSERT INTO imagetest (image) (@pic)";

OdbcCommand myCommand = new OdbcCommand(insertCmd, sqlConnection1);
myCommand.Parameters.Add(new OdbcParameter("@pic", OdbcType.Image));
myCommand.Parameters["@pic"].Value = buf;
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();


Выдает ошибку:
System.Data.Odbc.OdbcException: ERROR [42000] [MySQL][ODBC 5.1 Driver][mysqld-5.0.45-community-nt-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@pic)' at line 1
в System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
в System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
в System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
в System.Data.Odbc.OdbcCommand.ExecuteNonQuery()


Если меняю "INSERT INTO imagetest (image) (@pic)"; на "INSERT INTO imagetest (text) (‘Простой текст’)";
То все проходит без ошибок, нужный текст в базе появляется, подскажите что делаю не так?

Примечание:
Зачем ODBC, если есть родной MySQL .Net Connector

В том то и дело нужен именно он.

Примечание:
PetSerA

Вот уж гадость какая, спасибо, буду думать и искать дальше.
Ответы:
1) Зачем ODBC, если есть родной MySQL .Net Connector[1]?
2) When CommandType is set to Text, the .NET Framework Data Provider for ODBC does not support passing named parameters to an SQL statement or to a stored procedure called by an OdbcCommand. In either of these cases, use the question mark (?) placeholder. For example:
    SELECT * FROM Customers WHERE CustomerID = ?
    The order in which OdbcParameter objects are added to the OdbcParameterCollection must directly correspond to the position of the question mark placeholder for the parameter in the command text.[2]
>В том то и дело нужен именно он.
Тогда миритесь с его ограничениями: именованные параметры для команд типа Text не поддерживаются.
INSERT INTO imagetest (image) (?)


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.