sqlite3数据库操作大全

命令行操作

简单的说些常用命令

之前我们已经对sqlite源码进行了编译,生成一个.exe文件


打开这个文件可以进入windows下的sqlite命令行操作界面


输入下面两行命令(命令都是以  .XXXX形式 ,语句都以  XXXXX;  形式)


.open 打开demo.db数据库,如果不存在则创建数据库

.databases 查看当前已经打开的数据库信息

.exit 退出界面(这个不好截图微笑)


先打开数据库

create table demo1 (id integer primary key ,name text);创建表demo1,包含两个字段,id和name,id作为主键(SQL语句以;结尾)

.table 查看当前数据库下所有的表

.schema 查看表的结构,主要是看列的信息

drop table demo1; 销毁表demo1(这句也不演示,下面还要用到demo1表微笑)


.table 在插入前先查看数据库中的表是否存在

insert into demo1 values (1, 'zhao'); 插入记录(注意'zhao'的单引号)

select * from demo1 查看表中所有字段,查询语句可以用where来具体查询哪一条记录,比如下面的语句

select * from demo1 where id = 1; 具体查看id = 1 的那条记录


.header on 显示字段的名称

.mode column 以列模式显示记录


多插了几条记录,看起来直观一点


order by id desc 按id 降序 asc升序


更新表中记录,如果没有where,则会修改表中所有记录


删除记录,如果没有where,则会删除所有记录(跟drop不同,drop是删除表,delete是删除记录,表可以是空的)

下面是用C语言实现的SQL语句

我这里是创建的动态库,不过不影响语句(代码有点长偷笑偷笑)

#include "59108.h"

#include <iostream>
#include <string.h>


#pragma comment(lib,"..\\debug\\sqlite_win32_dll.lib")

using namespace std;



sqlite3 * ppDb = NULL;
int ret = 0;
char * errmsg;


//菜单

void menu()
{
	cout << "  ~菜单~ :   " << endl;
	cout << "          ~1.打开数据库~                " << endl;
	cout << "          ~2.创建表单~                  " << endl;
	cout << "          ~3.插入记录~                  " << endl;
	cout << "          ~4.删除记录~                  " << endl;
	cout << "          ~5.修改记录~                  " << endl;
	cout << "          ~6.查看记录~                  " << endl;
	cout << "          ~7.关闭数据库~                " << endl;
	cout << "          ~8.退出程序~                  " << endl;
	cout << "                               by  ljl  " << endl;
}

//打开,创建数据库

void open_create_db()             
{
	//sqlite3 * ppDb = NULL;

	char str[20] = {0};           //str[20]放的是数据库的名字
	cout << "输入要打开的数据库" << endl;
	cin >> str;
	ret = sqlite3_open(str,&ppDb);
	if(ret == SQLITE_OK)
	{
		cout << str << " 打开成功!" << endl;
	}
	else
	{
		cout << str << " 打开失败!" << endl;
	}
}


//创建表    

void create_form()    //str2[20]存放的是表的名字
{
	cout << "输入要创建的表的名字" << endl;
    char str[20] = {0};
	cin >> str;
	char sql[1024] = {0};

    sprintf(sql,"drop table if exists %s",str);
    sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg);  //在创建表时,如果表存在,则删除
    memset(sql,0,sizeof(sql));  //清空sql
	sprintf(sql,"create table %s(id int primary key,name text)",str);//创建表
	ret = sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg);
	if(ret == SQLITE_OK)
	{
		cout << str << " 表创建成功!" << endl;
	}
	else
	{
		cout << str << " 表创建失败!" << endl;
	}

}

//插入记录

void insert_record()    
{
	cout << "输入要插入记录的表单"<< endl;
	char str[20] = {0};
	cin >> str;
	cout << "输入要插入的id"<< endl;
	int x = 0;
	cin >> x;
    cout << "输入要插入的name"<< endl;
	char name[20] = {0};
	cin >> name;
	char sql[1024] = {0};
    sprintf(sql,"insert into %s values( %d, '%s')",str,x,name);  //格式 value(id , 'name') 单引号不能少
	ret = sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg);
	if(ret == SQLITE_OK)
	{
		cout << "记录插入成功!" << endl;
	}
	else
	{
		cout << "记录插入失败!" << endl;
	}

}


//删除记录

void delete_record()   //str2[20]存放的是表的名字
{
	char sql[1024] = {0};
	cout << "输入要删除记录的表单"<< endl;
	char str[20] = {0};
	cin >> str;
	cout << "1按id删除,2按name删除" << endl;
	int x = 0;
	int y = 0;
	char Name[20] = {0};
	cin >> x ;
	while(1)
	{
		if ( x == 1 )
		{
			cout << "输入要删除的id" << endl;
			cin >> y ;
            memset(sql,0,sizeof(sql)); 
			sprintf(sql,"delete from %s where id = %d",str,y);
			ret = sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg);
			if(ret == SQLITE_OK)
			{
				cout << "记录删除成功!" << endl;
			}
			else
			{
				cout << "记录删除失败!" << endl;
			}
			break;
		}
		else if ( x == 2)
		{
			cout << "输入要删除的name" << endl;
			cin >> Name;
			memset(sql,0,sizeof(sql)); 
			sprintf(sql,"delete from %s where name = %s",str,Name);
			ret = sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg);
			if(ret == SQLITE_OK)
			{
				cout << "记录删除成功!" << endl;
			}
			else
			{
				cout << "记录删除失败!" << endl;
			}
			break;

		}
		else if ( x !=1 && x != 2)
		{
			cout << "重新输入" << endl;   
		}
	}

}

//修改记录

void update_record()
{
	char name[20] = {0};
	char sql[1024] = {0};
	int y = 0;
	cout << "输入要修改记录的表单"<< endl;
	char str[20] = {0};
	cin >> str;
	cout << "1根据名字修改id,2根据id修改名字" << endl;
	int x = 0;
	cin >> x;
	while(1)
	{
		if ( x == 2 )
		{
			cout << "你想修改id是多少的名字" << endl;
			cin >> y;
			cout << "你想把名字改成什么" << endl;
			cin >> name;
			memset(sql,0,sizeof(sql)); 
			sprintf(sql,"update %s set name = '%s' where id = %d",str,name,y);
			ret = sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg);
			if(ret == SQLITE_OK)
			{
				cout << "记录修改成功!" << endl;
			}
			else
			{
				cout << "记录修改失败!" << endl;
			}
			break;
		}
		else if ( x == 1)
		{
			cout << "你想修改谁的id" << endl;
			cin >> name;
			cout << "你想把id改成什么" << endl;
			cin >> y;
			memset(sql,0,sizeof(sql)); 
			sprintf(sql,"update %s set id = %d where name = '%s'",str,y,name);
			ret = sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg);
			if(ret == SQLITE_OK)
			{
				cout << "记录修改成功!" << endl;
			}
			else
			{
				cout << "记录修改失败!" << endl;
			}
			break;

		}
		else if ( x !=1 && x != 2)
		{
			cout << "重新输入" << endl;   
		}
	}
}


//查看记录

void view_record()
{
	char **dbresult;
	int j,nrow,ncolumn,index; 
    char sql[1024] = {0};
	cout << "输入要查看记录的表单" << endl;
	char str[20] = {0};
	cin >> str;
    sprintf(sql,"select * from %s",str);
    ret = sqlite3_get_table(ppDb,sql,&dbresult,&nrow,&ncolumn,&errmsg);
	if(ret == SQLITE_OK)
	{
		cout << "查询到 " << nrow << " 行结果" << endl;
		index = ncolumn;
		for(int i = 0;i < nrow; i++)
		{
			printf("[%2i]",i);
			for(j = 0;j < ncolumn;j++)
			{
				printf("%s",dbresult[index]);
				index++;
			}
			cout << endl;
		}
		sqlite3_free_table(dbresult);
	}
}

//关闭数据库

void close_db()
{
	char str[20] = {0};           //str[20]放的是数据库的名字
	cout << "输入要关闭的数据库" << endl;
	cin >> str;
	ret = sqlite3_close(ppDb);
	if(ret == SQLITE_OK)
	{
		cout <<  str << " 关闭成功!" << endl;
	}
	else
	{
		cout <<  str << " 关闭失败!" << endl;
	}
}

我这边写了几个常用的功能.下面附带整个项目的代码,有兴趣的可以下载下来看看,运行运行

大笑大笑大笑百度网盘

链接https://pan.baidu.com/s/1idcPA3jV9wyKQR9YCz43yw

密码unnb


life means struggle.

生活就是斗争.













猜你喜欢

转载自blog.csdn.net/qq_37059136/article/details/80263046