SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.07.2008 21:58:34

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

MySQL C API & C#

Всем доброго времени суток!
Если тема не соответствует профилю форума, модераторы, удалите.
Суть проблемы в следующем. Пишу на С# прогу, которая в том числе работает с MySQL. Для работы необходимы апишные функции из libmysql.dll. Загружаю их из этой dll, в рантайме возникают исключения. На mysql_isert_id() исключение "Attempted to read or write protected memory. This is often an indication that other memory is corrupt.", на разные функции разные исключения))). Если есть у кого опыт подключения и использования апишных функций, поделитесь пожалуйста.

Неактивен

 

#2 21.07.2008 06:39:27

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: MySQL C API & C#

Почему не использовать Connector/NET? http://dev.mysql.com/downloads/connector/net/5.1.html

Неактивен

 

#3 21.07.2008 12:40:42

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: MySQL C API & C#

Я использую коннектор, но для некоторых запросов удобно использовать функции MySQL C API

Неактивен

 

#4 21.07.2008 15:27:50

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MySQL C API & C#

API C# полностью повторяет API C, я не вижу смысла использовать не родной для языка API.

Ошибка не в том, что C API плохой (его использует куча программ без проблем), ошибка в том,
что Вы его плохо подключаете, скорее всего wink

Неактивен

 

#5 21.07.2008 16:05:27

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: MySQL C API & C#

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

Неактивен

 

#6 21.07.2008 16:21:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MySQL C API & C#

Боюсь, что вы вряд ли найдете человека, который когда-либо это делал. Расскажите, пожалуйста,
какую задачу Вы пытаетесь выполнить, для которой Вам не хватает функциональности коннектора C#?

Неактивен

 

#7 21.07.2008 16:34:30

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: MySQL C API & C#

Не то что бы мне не хватает его функциональности, скорее проблемы с отладкой. Например, то же, что делает mysql_insert_id() пытался заменить на коннектор+LAST_INSERT_ID(), вот суть кода:
--------------------------------------------------------
OdbcConnection connection = new OdbcConnection(connectionString);//connectionString - правильный
connection.Open();
OdbcCommand command;

command = new OdbcCommand(queryString, connection);//queryString="INSERT..." - работает корректно
command.ExecuteNonQuery();

command = new OdbcCommand("SELECT LAST_INSERT_ID();", connection);
int i=command.ExecuteNonQuery();

OdbcDataReader reader = command.ExecuteReader();
       
tbIndex.Text = Convert.ToString(reader.GetInt32(0));/*здесь происходит ошибка "No data exists for the row/column"*/
       
connection.Close();
reader.Close();

-------------------------------------------------------
Я так понимаю LAST_INSERT_ID() должен вернуть целое значение, но его не получается отловить(((

Неактивен

 

#8 21.07.2008 17:31:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MySQL C API & C#

Хым. Насколько я вижу из этого куска кода, Вы не используете коннектор вообще - только ODBC.
Полистайте документацию по коннектору - Вы будете сильно удивлены возможностям C# smile

http://dev.mysql.com/doc/refman/5.1/en/ … mples.html

Неактивен

 

#9 21.07.2008 18:00:09

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: MySQL C API & C#

Разъясните пожалуйста в чем заключается использование коннектора, т.к. полистав экзамплы по Вашей ссылке я не нашел в них принципиального различия по сравнению с моим подходом. Суть все равно остается та же - составление запросов с использованием команд MySQL. А это не решает моих проблем, например у апишной функции mysql_escape_string аналогов я не нашел.

Неактивен

 

#10 21.07.2008 18:40:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MySQL C API & C#

Насколько я знаю, mysql_escape_string вообще не нужен при использовании современных
интерфейсов к БД. Посмотрите, например, http://dev.mysql.com/doc/refman/5.0/en/ … nd-prepare

Неактивен

 

#11 22.07.2008 00:04:17

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: MySQL C API & C#

А где взять классы MySqlCommand, MySqlCommandBuilder и др? Что-то никак не найду соответствующей сборки/пространства...

Неактивен

 

#12 22.07.2008 13:02:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Неактивен

 

#13 22.07.2008 13:20:58

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: MySQL C API & C#

Да, спасибо, я пользуюсь именно этим коннектором. Но VC2005 не видит нэймспэйса MySql....

Неактивен

 

#14 22.07.2008 13:42:52

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: MySQL C API & C#

Подозреваю, что его нужно подключить. Насколько я помню, это делается как-то через
менюшку... подробнее не помню, и под рукой нету приложения. sad

Неактивен

 

#15 22.07.2008 13:49:30

bRUtality
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 32

Re: MySQL C API & C#

Действительно, нужно было подключить его dll через Add Referenses. Вы мне очень помогли. Премного благодарен.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson