Ну вообщем-то вопрос один: что-то дособирать надо для работы с SQL Server через ODBC? Сборку Qt делал ту, что была по-умолчанию. Напомню, что работаю с MS Visual Studio (в смысле, использую его компилятор - (вдруг различия будут в указании флажков каких-то))!
просто http://crossplatform.ru/documentation/qtdoc4.3/sql-driver.php#qodbc-for-open-database-connectivity-odbc
этого достаточно, подключать ничего специально не надо, только модуль SQL должен быть подключен.
Работу ODBC драйвера лучше всего проверить с помощью %QTDIR%\demos\sqlbrowser, в списке доступных драйверов должен быть QODBC
если у тебя в программе будет только одно соединение с БД, то можно так сделать:
static bool dbconnect()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("MY_ODBC_ALIAS");
db.setUserName("user");
db.setPassword("password");
if (!db.open())
{
QString qerr = db.lastError().text();
QMessageBox::critical(0, QObject::tr("Ошибка базы данных"),
QObject::tr("Невозможно установить соединение.\n\r")+qerr,
QMessageBox::Cancel);
return 1;
}
return 0;
}
Я не понял, почему он только первую запись выводит!
Вот код:
/// Соединение с базой данных и проверка этого соединения
void TestDBAppl::connectClick()
{
is_conn = (createConnection()) ? true : false;
if(!is_conn)
{
QMessageBox msg(QMessageBox::Critical, "Connections", "Connection is not found", QMessageBox::Ok, this);
msg.exec();
return;
}
else
{
QSqlQuery query;
if(query.exec("use MyDB"))
{
QMessageBox msg(QMessageBox::Information, "Connections", "Successfully", QMessageBox::Ok, this);
msg.exec();
}
else
{
QMessageBox msg(QMessageBox::Information, "Connections", "Isn't this table", QMessageBox::Ok, this);
msg.exec();
}
}
}
/// Обзор всех записей в таблице
void TestDBAppl::selectClick()
{
QSqlQuery query;
query.exec("select name from UserNames");
int index = 0;
while(query.next())
{
QString recordName = query.value(index).toString();
listDBNames -> addItem(recordName);
++index;
}
update();
}
query.value(index)
index - это столбец таблицы, а строки перебираются с помощью query.next(), поставиь вместо index.фиксированый номер столбца, который тебя интерисует.
по сути ты сейчас идешь по диагонали таблицы
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)