我正在使用 Microsoft ODBC 驱动程序连接到 MS SQL 表(来自 Linux)。请注意,如果“MyTable”指向列中没有空格的表,则一切正常。对于另一张表(我需要从中读取的表),东西呈梨形,大约在它到达带有空格的第一列的时候。我从 lastError().text() 中得到的错误类似于:
ERROR: [Microsoft][ODBC Driver 11 for SQL Server][SQL "U Max", "U Max_Inst", "U [Microsoft][ODBC Driver 11 for SQL Serve][SQL "U Max_I2", "U Max_I3 QODBC3: Unable to execute statement
在我的生活中,我肯定遇到过更好的错误,但这至少是一个暗示。
代码:
SqlTableModel::SqlTableModel( QObject* parent, QSqlDatabase db ) : QSqlTableModel( parent, db )
{
}
auto SqlTableModel::initialize() -> void
{
if ( !database().open() ) {
QSqlError error = database().lastError();
std::cout << "ERROR: Couldn't open database: " << error.text().toStdString() << std::endl;
return;
}
getRows();
}
auto SqlTableModel::getRows() -> void
{
setTable( "MyTable" );
if ( select() ) {
std::cout << "selected returned true." << std::endl;
} else {
std::cout << "failed to select" << std::endl;
std::cout << "ERROR: " << lastError().text().toStdString() << std::endl;
}
}
如果我想尝试解决此问题并仅手动从表中选择某些列(IE,带有查询),我是否需要使用 QSqlQueryModel 执行此操作,然后为每个相邻记录调用 setData()?