sql数据库部分
转https://blog.csdn.net/discoverer100/article/details/51932529
找到 libqsqlmysql.so
用 sudo find . -name libqsqlmysql.so
然后进入那个目录执行
ldd libqsqlmysql.so
1
执行后,若发现存在下列问题:
libmysqlclient_r.so.16 => not found
libssl.so.10 => not found
libcrypto.so.10 => not found
则按照下列第2.2步和第2.3步的方法进行解决2。
2.2 解决libmysqlclient_r.so.16 => not found的问题。下载 libmysqlclient.so.16,地址: http://files.directadmin.com/services/debian_5.0_64/libmysqlclient.so.16
下载后将该文件拷贝至/usr/lib/x86_64-linux-gnu,并重命名为libmysqlclient_r.so.16,参照下列命令。
sudo cp /home/xiaoyafu/下载/libmysqlclient.so.16 /usr/lib/x86_64-linux-gnu
cd /usr/lib/x86_64-linux-gnu
sudo mv libmysqlclient.so.16 libmysqlclient_r.so.16
执行完后,重新执行步骤2.1中的ldd libqsqlmysql.so,检查是否解决了该问题。
2.3 解决libssl.so.10 => not found和libcrypto.so.10 => not found的问题。执行下列命令:
sudo apt-get update
sudo apt-get install libssl1.0.0 libssl-dev
cd /lib/x86_64-linux-gnu
sudo ln -s libssl.so.1.0.0 libssl.so.10
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10
QT += sql
QSqlDatabase
该QSqlDatabase类处理与数据库的连接。
Driver Type | Description |
---|---|
QDB2 | IBM DB2 |
QIBASE | Borland InterBase Driver |
QMYSQL | MySQL Driver |
QOCI | Oracle Call Interface Driver |
QODBC | ODBC Driver (includes Microsoft SQL Server) |
QPSQL | PostgreSQL Driver |
QSQLITE | SQLite version 3 or above |
QSQLITE2 | SQLite version 2 |
QTDS | Sybase Adaptive Server |
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QApplication::addLibraryPath("/home/zz/Qt5.7.0/5.7/gcc_64/plugins/sqldrivers");
// qDebug() << QCoreApplication::libraryPaths();
// qDebug() << QSqlDatabase::drivers();
//1.建立数据库
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("192.168.88.131");
db.setDatabaseName("mydata");
db.setUserName("zz");
db.setPassword("123");
//2.打开数据库
if(db.open())
{
qDebug()<<"DataBase opened!";
}
else
{
qDebug()<< "Error: Failed to connect database." << db.lastError();
}
//3.操作数据库
QSqlQuery sql_query;
QString create_sql="create table student3 ( id int primary key,name varchar(30),age int)";//3.1创建表
sql_query.prepare(create_sql);
if(!sql_query.exec()) qDebug() << "Error: Fail to create table." << sql_query.lastError();
else qDebug()<<"table created!";
QString insert_sql = "insert into student3 values (?, ?, ?)"; //3.2插入数据
sql_query.prepare(insert_sql);
sql_query.addBindValue(1500730121);
sql_query.addBindValue("Wang");
sql_query.addBindValue(25);
if(!sql_query.exec()) qDebug() << "Error: Fail to insert table." << sql_query.lastError();
else qDebug()<<"table inserted!";
if(!sql_query.exec("INSERT INTO student3 VALUES(3, \"Li\", 23)")) qDebug()<<"insert error!";
QString update_sql = "update student3 set name = :name where id = :id"; //3.3修改数据
// update <table_name> set <f1=value1>, <f2=value2>… where <expression>;
sql_query.prepare(update_sql);
sql_query.bindValue(":name", "Qt");
sql_query.bindValue(":id", 3);
if(!sql_query.exec())
{
qDebug() << sql_query.lastError();
}
else
{
qDebug() << "updated!";
}
QString select_sql = "select id, name from student3"; //3.4查询数据
if(!sql_query.exec(select_sql))
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
int id = sql_query.value(0).toInt();
QString name = sql_query.value(1).toString();
qDebug()<<QString("id:%1 name:%2").arg(id).arg(name);
}
}
QString delete_sql = "delete from student where id = ?"; //3.5删除
sql_query.prepare(delete_sql);
sql_query.addBindValue(3);
if(!sql_query.exec())
{
qDebug()<<sql_query.lastError();
}
else
{
qDebug()<<"deleted!";
}
//4.关闭数据库
db.close();
return a.exec();
}
/*Result:
* DataBase opened!
* table created!
* table inserted!
* updated!
* "id:3 name:Qt"
* "id:1500730121 name:Wang"
* QSqlError("1146", "QMYSQL: Unable to execute query", "Table 'mydata.student' doesn't exist")
*/
model部分请查看:高级控件