Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
1

Ошибка соединения с БД "архитектура драйвера и приложения не соответствуют"

10.02.2016, 15:38. Просмотров 1377. Ответов 53
Метки нет (Все метки)

Работаю в RAD studio и столкнулся с проблемой, когда нужно установить связь приложения и БД. Установил драйвер ODBC все сделал - связь моей БД и ODBC есть. Кидаю ADOCconnector1 на форму, кликаю , выбираю пункт use connection string дальше browse... , затем выбираю Microsoft OLE DB Provider for ODBC Drivers. Заполняю все поля, нажимаю "проверить соединение" и выскакивает такая ошибка. Как избавиться от нее?
0
Миниатюры
Ошибка соединения с БД "архитектура драйвера и приложения не соответствуют"  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2016, 15:38
Ответы с готовыми решениями:

В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу
Добрый день. При запуске программы выскакивает вот такая вот ошибка. В чем...

Ошибка "в указанном dsn архитектура драйвера и архитектура приложения"
Вот такая ошибка при нажатии на кнопку "Проверить соединение" Я прочитал,...

Архитектура "сервер-клиент", "точка-многоточие"
использование ServerSocket1 и ClientSocket1 при структуре "точка-точка" не...

Ошибка при компиляции: "E2275 { expected" и "E2040 Declaration terminated incorrectly"
Здравствуйте! При компиляции выдает такую ошибку: C++ Error] Unit1.cpp(12):...

Ошибка при работе с ини файлами когда разделителем является не "=", а ":"
Всем привет. Такая проблема имеются файлы ".ini" в них разделителем является...

53
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,480
Записей в блоге: 3
10.02.2016, 23:54 2
Если писать программно то будет вот так вот под твой драйвер
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DBGrid1->DataSource = DataSource1;
DataSource1->DataSet = ADOQuery1;
 
ADOConnection1->ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=G:\\NPC.mdb;Uid=root;Pwd=ТвойПароль";
ADOQuery1->Connection = ADOConnection1;
ADOConnection1->Open();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("Select *From Glavnaya");
ADOQuery1->Open();
}
1
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
11.02.2016, 11:50  [ТС] 3
Получается, это решит проблему? Или это замена тому, что я сделал?
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,480
Записей в блоге: 3
11.02.2016, 13:29 4
это решит проблему
1
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
11.02.2016, 13:35  [ТС] 5
А можете прокомментировать код, который Вы привели? Я вот только в первый раз ытаюсь наладить связь БД с c++ builder и не разбираюсь в этом.
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,480
Записей в блоге: 3
11.02.2016, 13:51 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DBGrid1->DataSource = DataSource1; //подключаем DBGrid1 к DataSource через него будут попадать данные в таблицу
DataSource1->DataSet = ADOQuery1;//сам DataSource1 настраиваем, на источник  ADOQuery1
 
//по сути DataSource является посредником между DBGrid1 и ADOQuery1
 
ADOConnection1->ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=G:\\NPC.mdb;Uid=root;Pwd=ТвойПароль"; //строка подключения к ADOConnection1. ADOConnection1 это первый компонент в который необходимо внести название драйвера для подключения к БД 
ADOQuery1->Connection = ADOConnection1; // приравниваем строку подключения ADOQuery1 к строке подключения ADOConnection1
ADOConnection1->Open(); // Активируем ADOConnection1 на подключение
ADOQuery1->Close();//диактивируем ADOQuery1
ADOQuery1->SQL->Clear();// очищаем ADOQuery1 для того, чтобы внести новый текст запроса 
ADOQuery1->SQL->Add("Select *From Glavnaya");//текст запроса на выборку из базы
ADOQuery1->Open();//Активируем ADOQuery1 на подключение
}

От себя скажу я лично использую драйвер для подключения
Provider=Microsoft.Jet.OLEDB.4.0
он лучше чем твой.

А также строки для подключения к базе можно посмотреть здесь

http://www.connectionstrings.com/access/
1
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
11.02.2016, 14:00  [ТС] 7
Спасибо. Вот еще вопрос.
C++
1
ADOConnection1->ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=G:\\NPC.mdb;Uid=root;Pwd=ТвойПароль";
Здесь написано - Microsoft acces driver. Это правильно, если я использую БД на mysql, а не БД microsoft acces?
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,480
Записей в блоге: 3
11.02.2016, 14:01 8
Цитата Сообщение от Nik- Посмотреть сообщение
Это правильно, если я использую БД на mysql, а не БД microsoft acces?
нет, это не правильно
0
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
11.02.2016, 14:02  [ТС] 9
А, еще. Ошибка была из-за разности версий. Я установил x32, когда было x64 и все получилось.
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,480
Записей в блоге: 3
11.02.2016, 14:03 10
Вот строки подключения к MySQL

http://www.connectionstrings.com/mysql/

Подбери себе подходящую для твоего MySQL
1
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
11.02.2016, 14:07  [ТС] 11
Подскажите, пожалуйста, какие команды работы с БД есть. Допустим использовать такое-то слово, как переменную , добавить в в такой-то столбик такой-то таблицы слово или цифру и т.д.
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,480
Записей в блоге: 3
11.02.2016, 14:11 12
Я обычно для добавления и изменения использую параметризированные запросы
Пример вот
Не могу добавить запись в базу выдает ошибку синтаксиса INSERT INTO подскажите что исправить
Команды запросов UPDATE, INSERT INTO, DELETE
1
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
11.02.2016, 14:14  [ТС] 13
А есть какой-нибудь сайт с описанием тех же ADOQuery и других компонентов?
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,480
Записей в блоге: 3
11.02.2016, 14:21 14
Вот например:
http://space-base.ru/library/?book=71

Добавлено через 1 минуту
http://delphicode.org/database/Otkri...z-ADOQuery.htm
1
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
11.02.2016, 14:55  [ТС] 15
Спасибо Вам огромное

Добавлено через 26 минут
Я сделал так же, как вы привели пример с форума, но у меня выскакивает исключение, что, допустим, 4d5a не найден. Код:
C++
1
2
3
4
5
6
7
8
9
10
ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Text = "INSERT INTO viruses (virSign, virName, virLenght) VALUES(4d5a,test,4)";
    ADOQuery1->Parameters->ParamByName("4d5a")->Value=Label1->Caption;
    ADOQuery1->Parameters->ParamByName("test")->Value=Label1->Caption;
    ADOQuery1->ExecSQL();
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("SELECT * FROM viruses");
    ADOQuery1->Open();
Добавлено через 7 минут
Я даже через консоль самой БД добавил туда значения, но программа все равно пишет - Parametr '4d5a' not found'.
0
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,480
Записей в блоге: 3
11.02.2016, 15:56 16
А так что пишет?
C++
1
2
3
4
5
6
7
8
9
10
11
ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Text = "INSERT INTO viruses (virSign, virName, virLenght) VALUES(:4d5a,:test,:virlen)";
    ADOQuery1->Parameters->ParamByName("4d5a")->Value=Label1->Caption;
    ADOQuery1->Parameters->ParamByName("test")->Value=Label1->Caption;
    ADOQuery1->Parameters->ParamByName("virlen")->Value=4;
    ADOQuery1->ExecSQL();
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("SELECT * FROM viruses");
    ADOQuery1->Open();
1
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
11.02.2016, 16:31  [ТС] 17
'Аргументы имеют неверный тип, выходят за рамки диапазона или вступают в конфликт с друг другом'
Вот типы данных:
0
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
11.02.2016, 16:33  [ТС] 18
Фото БД с типами данных
0
Миниатюры
Ошибка соединения с БД "архитектура драйвера и приложения не соответствуют"  
Sasha
4924 / 2388 / 530
Регистрация: 05.06.2008
Сообщений: 7,480
Записей в блоге: 3
11.02.2016, 17:08 19
Пробуй так
C++
1
2
3
4
5
6
7
8
9
10
11
ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Text = "INSERT INTO viruses (virSign, virName, virLenght)VALUES(:part1,:part2,:part3)";
    ADOQuery1->Parameters->ParamByName("part1")->AsString = Label1->Caption;
    ADOQuery1->Parameters->ParamByName("part2")->AsString = Label1->Caption;
    ADOQuery1->Parameters->ParamByName("part3")->AsInteger=4;
    ADOQuery1->ExecSQL();
    ADOQuery1->Close();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("SELECT * FROM viruses");
    ADOQuery1->Open();
1
Nik-
20 / 20 / 11
Регистрация: 12.07.2015
Сообщений: 345
11.02.2016, 17:10  [ТС] 20
Спасибо, как приду домой - попробую и скажу.
0
11.02.2016, 17:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2016, 17:10

Ошибка: "unknown picture file extension(.)". "jpeg.hpp" подключен
При попытке загрузить фото выходиьт такая ошибка "unknown picture file...

ShellExecute. ошибка: аргумент типа "const char*" не совместим с параметром типом "LPCSTWR", Visual Studio 2017
Ребят можете помочь. Знаю, что на форуме полно ответов, но никакой не помогает....

Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add")
При использовании следующего кода: Word =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru