Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Попытка чтения или записи в защищенную память, AccessViolationException 
V
    Опции темы
v_enom
Дата 14.2.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



очень мучаюсь.
постоянно при попытке чтения появляется такая ошибка:


AccessViolationException:
Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.


 Нужно получить данные из MySQL. Использую MySQL connector 5.1 net.
 код тестовый и простой.
таблица в БД тоже простая:  

 id | name | city
--------------------
1   |  aaaa | sev
23 | gedf   | msk



Код

  string MyConString =
                   "DRIVER={MySQL ODBC 5.1 Driver};" + // меня не надо, это драйвер  ODBC
                   "SERVER=localhost;" +
                   "PORT=3306;" +
                   "DATABASE=order_tour;" +
                   "UID=root;" +
                   "PASSWORD=;";
            OdbcConnection MyConnection = new OdbcConnection(MyConString);


            string SQLCommand = "select * from test";
            OdbcDataAdapter da = new OdbcDataAdapter(SQLCommand,MyConnection);
            DataSet ds = new DataSet();

            MyConnection.Open(); 
            da.Fill(ds);               // вот тут ошибка вылетает


тоже самое если использовать reader:

Код

 reader = command.ExecuteReader();                     
            object requsetArray;
            while (reader.Read())
            { 
                // или так: string res;  res = reader.GetString(1);
                requsetArray = reader["id"];   // а если поставить   например reader["name"] то выскакивает эта  ошибка.... а если  reader["id"], то   requsetArray==1

            }
            reader.Close();

помгите, потому что везде в уроках все проходит гладко, а у меня криво. Поиск тоже не помог ((((( даже гугл.

Это сообщение отредактировал(а) v_enom - 14.2.2009, 17:32
PM MAIL   Вверх
v_enom
Дата 15.2.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



up!
неужели ни кто не сталкивался с такой траблой???\

может тогда у кого-то есть ссылка на статью как работать с Mysql из под C# или С++ ?????
PM MAIL   Вверх
v_enom
Дата 15.2.2009, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



решил проблему сам!!  smile 
оказывается проблема была в том, что не подключена библиотеке mysql.data.dll была. Естесвенно нельзя было написать что-то типо MySqlDataAdapter.... А т.к. коннектор .Net стоял, а не odbc, то вылезала ошибка. 
как только поставил  ODBC коннектор - все заработало, а после, подключив библиотеку, запустил и .Net  connector

причина была в том, что где-то в инете на сайте нашел пример якобы подключения к мускулу через Net connector ... но с помощью библиотеки System.data.Odbc. Прочитанное на сайте оказалось бредом на практике, что и ввело меня в заблуждение.

теперь как надо:
1. поставить VStudio, базу данных.
2. поставить коннектор ODBC или Mysql Connector Net

    2.a) ODBC. 
        прописываем using System.Data.Odbc
        и все работает. 
        файл коннектора: mysql-connector-odbc-5.1.5-win32.msi
        help по ODBC коннектору

    2.б) Mysql
        добавляем файл using MySql.Data.dll в приложение: SolutionExpl->ConsoleApplication1(name)->add Refference->MySQl.Data.dll
        Подключаем пространсвто имен using MySql.Data.MySqlClient;
        запускаем и все работает.

        файл коннектора: mysql-connector-NET-5.2.5-win32.msi
        help по .Net коннектору


вот пример вывода для стандартной БД:

Код


static void ConnectToMySQL()
        {

            string source =
                  // "DRIVER={MySQL ODBC 5.2 Driver};" + // это драйвер  ODBC. для  Connector Net  не надо.
                   "SERVER=localhost;" +
                   "PORT=3306;" +
                   "DATABASE=mysql;" +
                   "UID=root;" +
                   "PASSWORD=;";

            string commandString = "SELECT * FROM user;";

            MySqlDataAdapter da = new MySqlDataAdapter(commandString, source);
            DataSet ds = new DataSet();
            da.Fill(ds, "user");
            DataTable dt = ds.Tables[0];
            Console.WriteLine("Coonection to MySQL SERVER. DataBase = mysql, Table Name = user\n\n");
            
            Console.WriteLine("-------------------------------");
            foreach (DataRow row in dt.Rows)
            {
                    Console.WriteLine("{0} \t {1} \t {2} \t", row[0], row[1], row[2]);
            }
        }


Это сообщение отредактировал(а) v_enom - 15.2.2009, 19:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0395 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.