一般情况下我们使用sqlite都是这么使用的
ql_Connect::Sql_Connect(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Sql_Connect)
{
ui->setupUi(this);
qDebug() << QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("../info.db");
if(!db.open())
{
QMessageBox::warning(this,"错误",db.lastError().text());
return;
}
//设置模型
model = new QSqlTableModel(this);
//指定使用哪个表
model->setTable("user");
//把model放到view中
ui->tableView->setModel(model);
//显示model的数据
model->select();
但是在query初始化的时候,不适用系统默认的数据库关联,而是**强制指定关联数据库** -------------------**QSqlQuery query(db)**;
qDebug() << QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("../info.db");
//这里要改:
db.open();
// qDebug() << db.open();
QString username = ui->userNameLEd->text();
QString password = ui->pwdLEd->text();
if(username == "")
QMessageBox::warning(this,"","用户名不能为空!");
else if(password == "")
QMessageBox::warning(this,"","密码不能为空!");
else
{
//sql语句在数据库中进行查询验证
QString S = QString("select * from user where username ='%1'and password = '%2' ")
.arg(username).arg(password);
// QSqlQuery query; 这儿要改
QSqlQuery query(db);
query.exec(S);
qDebug() <<query.exec(S);
int row = queryRowCount(query);
if(row == 1)
{
MyTcpClient *mytcpclient = new MyTcpClient;
mytcpclient->show();
}
else
QMessageBox::warning(this, tr("警告!"),tr("用户名或密码错误!"),QMessageBox::Yes);
// 清空输入框内容
ui->userNameLEd->clear();
ui->pwdLEd->clear();
//光标定位
ui->userNameLEd->setFocus();
}
试了半天发现还是不行 最后加了个db.open();就可以了