Qt下Sqlite数据库操作(2)

  本文基于上一篇Sqlite数据库做一些基本的Sqlite数据库的操作分享。最基本的数据库操作无外乎增删查改操作,那么对应的SQL语句怎么样呢,下面我们共同学习下!

1、在上文中提供了windows下Sqlite数据库的安装方法,本文在此增加Linux和Ubuntu下Sqlite的安装:

1)离线安装
//下载安装包
sqlite3_3.7.9-2ubuntu1_i386.deb//ubuntu12.04 32位
libsqlite3-dev_3.7.9-2ubuntu1.2_amd64.deb //64位
sudo dpkg -i xx.deb
2)在线安装

sudo apt-get install sqlite3

2、常用的命令
在终端输入:sqlite3 testDB.db,进入命令操作界面,指针testDB.db数据文件进行操作。
注:在命令行界面可以输入两种指令,一种是sqlite3自身的指令,以"."开始,输入“.help”可以看到这些指令的帮助文档。另外一种是对数据的操作指令,比如创建数据表,或者对数据表的数据进行增删改查等操作,称为SQL语句,以";"结束。


eg://sqlite3自身的指令
sqlite > .help
sqlite > .quit
eg://SQL语句,查询company数据表中的所有数据
sqlite > SELECT * FROM company;

1).databases //查看数据库的名字
2).tables //列出数据表名字
3).schema//查看数据表创建语句(了解数据表详细信息)
4).header on //显示数据标题栏
5).mode column/list //设置显示模式

3、数据库基本操作

1)创建数据库文件
语法:
   sqlite3 数据文件名.db
eg: sqlite3 test.db
   创建数据文件test.db并进入命令行操作界面
   .databases 可以查看到数据的信息
   
2)创建数据表
语法:
CREATE TABLE 表名(
    列名1  类型  [约束],
    列名2  类型  [约束],
    ...
    列名n  类型  [约束]);


类型:INT(整型数)
     TEXT(文本字符串)
     REAL(浮点数)


约束:
PRIMARY KEY 主键约束,表示该列的数据唯一,并且可以加快数据的访问。
NOT NULL 非空约束,表示该列的数据不能为空


3)删除数据表
 DROP TABLE 表名;
 注:数据表一旦删除里面的数据也将消失
 
4)插入数据 INSERT
语法:
   INSERT INTO 表名 (列名1,列名2,...)
    VALUES(数值1,数值2,...);
eg:
sqlite> INSERT INTO company
   ...> (id,name,age,address,salary)
   ...> VALUES(10018,'什么',19,'鬼话',1300.5);


sqlite> INSERT INTO company
   ...> VALUES(10030,'懒人',25,'勤快',6000.5);


5)删除数据 DELETE
语法:
   DELETE FROM 表名 WHERE 条件表达式;
sqlite> DELETE FROM company WHERE id=10019;
sqlite> DELETE FROM company 
WHERE salary<1000 or salary>8000;


6)修改数据 UPDATE
语法:
  UPDATE 表名 SET 列名1=数值1,列名2=数值2..
  WHERE 条件表达式;
eg:
sqlite> UPDATE company SET salary=salary+1000
   ...> WHERE salary<2000;


7)查询数据 SELECT
语法:
   SELECT 列名1,列名2... FROM company;
   SELECT 列名1,列名2... FROM company 
    WHREE 条件表达式
    ORDER BY 列名 排序方式;

   注:排序方式 ASC(升序) DESC(降序)

 

Sqlite数据库的相关操作到此over。有更好的建议和对文中不足之处请留言。谢谢!

 

 

发布了109 篇原创文章 · 获赞 28 · 访问量 7万+
展开阅读全文

Qt里面使用sqlite3连接成功,但是对数据库操作无响应

03-14

操作环境是 macOS, Qt 5.8 在代码外,我建好了 myData.db 数据库文件,已经进行了建表。我想把在ui 界面的输入框里面获得到的数据插入到数据库里面,但是运行后点击相关的插入按钮却插入不成功。 我是连上了数据库的,但是不能把获取到的数据插入到数据库,也没有报错什么的,不知道是否是我的数据库环境配置问题还是代码上忘了什么。请大家帮我看看,十分感谢。 这个是主页面的 cpp文件 ```c++ #include "MainWindow.h" #include "ui_MainWindow.h" #include "NextWindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //创建出新窗口 nextWin = new NextWindow; connect(ui->switchLabel, &MyLabel::clicked, [=](){ this->hide(); nextWin->show(); }); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_signUp_clicked() { //连接到数据库 // myData = QSqlDatabase::addDatabase("QSQLITE"); QSqlDatabase myData; if(QSqlDatabase::contains("qt_sql_default_connection")) { myData = QSqlDatabase::database("qt_sql_default_connection"); //判断一下 } else { myData = QSqlDatabase::addDatabase("QSQLITE"); } myData.setHostName("localhost"); myData.setUserName("Root"); myData.setPassword(""); myData.setDatabaseName("myData.db"); if(myData.open()) { qDebug() <<"数据库连接成功"<<endl; //取出创建的用户名,密码和手机号 QString signName = ui->signNameBtn->text(); QString signPassword = ui->signPassBtn->text(); QString signPhone = ui->signPhoneBtn->text(); //插入到数据库里面 QSqlQuery sql; sql.prepare("INSERT INTO users (userName, password, email)" "VALUES (:uerName, :password, :email)"); sql.bindValue(":userName", signName); //之前取出来的 Qstring的signName sql.bindValue(":password", signPassword); sql.bindValue(":email", signPhone); //数据库里面的第三个写的是邮箱,不好改,下次得注意 //提示数据插入成功没有 if(sql.exec()) { QMessageBox::information(this, "Successful", "Insert data successful"); }else { QMessageBox::information(this, "Not Inserted", "Data is not inserted "); } }else { QMessageBox::information(this, "Not connected", "database is not conntected"); } } ``` --- 头文件 ``` #include <QString> #include<QSqlQuery> #include <QDebug> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); //下个页面的指针 NextWindow* nextWin; private slots: void on_logInBtn_clicked(); //登录按钮 void on_signUp_clicked(); //注册按钮 private: Ui::MainWindow *ui; QSqlDatabase myData; }; #endif // MAINWINDOW_H ``` ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552520451_927725.jpg) --- 我把错误打印出来了,`QSqlError("", "Parameter count mismatch", "")` 说是参数错误,我输出了一下从输入框获取的值,是成功的。所以应该是插入那一段代码有问题吧。但是我仔细看了一下我的数据文件,都是匹配的啊。。 ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552548572_810358.jpg) ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552548589_73200.jpg) ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552548631_785784.jpg) 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览