sqlite3的基本操作
今天在做数据库升级时,碰到要对原来数据库中一张表的一个字段名进行修改,但是用:alter table tablename rename column oldColumnName to newColumnName;始终不成功,后面查阅相关信息:SQLite supports a limited subset of ALTER TABLE. The ALTER TABLE command in SQLite allows the user to rename a table or to add a new column to an existing table. It is not possible to rename a column, remove a column, or add or remove constraints from a table.sqlite支持一个更改表内容的有限子集,就是说在sqlite更改表的命令中,只允许用户重命名表名或者增加多一个列到一个的表中。而重命名一个字段名和删除一个字段、或者增加和删除系统规定的参数这些操作是不可能的。解决办法:例如:在上面的操作过程中,我们在people表中新添加了一个字段addr,要删除这个字段,直接用sqlite的语句时无法完成的。我们可以这样干:A.将people表重命名为temp;B.重新创建people表;C.将temp表中的相应字段内容复制到people表中。D.删除temp表操作如下:A.alter table people rename to temp;B.create table people(id,name,age);C.insert into people select id,name,age from temp;
- #include <sqlite3.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <stdio.h>
- int main(int argc,char *argv[])
- {
- sqlite3 **db;
- int result;
- if(argc < 2)
- {
- fprintf(stderr,"usage : %s argv[1].\n",argv[0]);
- exit(EXIT_FAILURE);
- }
- result = sqlite3_open(argv[1],&db);
- if(result != SQLITE_OK)
- {
- printf("Fail to sqlite3 open %s : %s.\n",argv[1],sqlite3_errmsg(db));
- exit(EXIT_FAILURE);
- }
- result = sqlite3_close(db);
- if(result != 0)
- {
- printf("Fail to sqlite3 close %s : %s.\n",argv[1],sqlite3_errmsg(db));
- exit(EXIT_FAILURE);
- }
- exit(EXIT_SUCCESS);
- }
- #include <sqlite3.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX 100
- typedef int (*sqlite3_callbak)(void *,int ,char **,char **);
- int ShowMyInfo(void *arg,int n_column,char **column_value,char **column_name)
- {
- int i = 0;
- for(i = 0;i < n_column;i ++)
- {
- printf("%s\t",column_name[i]);
- }
- printf("\n*************************************\n");
- for(i = 0;i < n_column;i ++)
- {
- printf("%s\t",column_value[i]);
- }
- printf("\n\n");
- return 0;
- }
- int exec_sql_string(char *sql_string,sqlite3 *db)
- {
- char *errmsg;
- if(sqlite3_exec(db,sql_string,ShowMyInfo,NULL,&errmsg) != 0)
- {
- fprintf(stderr,"Fail to exec sql(%s) : %s.\n",sql_string,errmsg);
- return -1;
- }
- return 0;
- }
- int main(int argc,char *argv[])
- {
- sqlite3 *db;
- int result;
- char sql_buf[MAX];
- if(argc < 2)
- {
- fprintf(stderr,"usage : %s argv[1].\n",argv[0]);
- exit(EXIT_FAILURE);
- }
- result = sqlite3_open(argv[1],&db);
- if(result != SQLITE_OK)
- {
- fprintf(stderr,"Fail to sqlite3_open %s : %s.\n",argv[1],sqlite3_errmsg(db));
- exit(EXIT_FAILURE);
- }
- while(1)
- {
- printf("sqlite >");
- fgets(sql_buf,sizeof(sql_buf),stdin);
- sql_buf[strlen(sql_buf) - 1] = '\0';
- if(strncmp(sql_buf,"quit",4) == 0)
- break;
- exec_sql_string(sql_buf,db);
- }
- result = sqlite3_close(db);
- if(result != 0)
- {
- fprintf(stderr,"Fail to sqlite3_open %s : %s.\n",argv[1],sqlite3_errmsg(db));
- exit(EXIT_FAILURE);
- }
- exit(EXIT_SUCCESS);
- }
运行结果:
- #include <sqlite3.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX 100
- int exec_sql_string(char *sql_string,sqlite3 *db)
- {
- char *errmsg,**dbResult;
- int nRow,nColumn;
- int result,i,j,index;
- result = sqlite3_get_table(db,sql_string,&dbResult,&nRow,&nColumn,&errmsg);
- if(0 != result){
- fprintf(stderr,"Fail to exec sql(%s) : %s.\n",sql_string,errmsg);
- return -1;
- }
- //字段名字
- for(j = 0;j < nColumn;j ++)
- {
- printf("%s\t",dbResult[j]);
- }
- printf("\n");
- index = nColumn;//从它开始是字段对应的值
- for(i = 0;i < nRow;i ++)//查询到总共记录个数
- {
- for(j = 0;j < nColumn;j ++)
- {
- printf("%s\t",dbResult[index]);
- index ++;
- }
- printf("\n");
- }
- //释放查询结果所分配的内存
- sqlite3_free_table(dbResult);
- return 0;
- }
- int main(int argc,char *argv[])
- {
- sqlite3 *db;
- int result;
- char sql_buf[MAX];
- if(argc < 2)
- {
- fprintf(stderr,"usage : %s argv[1].\n",argv[0]);
- exit(EXIT_FAILURE);
- }
- result = sqlite3_open(argv[1],&db);
- if(result != SQLITE_OK)
- {
- fprintf(stderr,"Fail to sqlite3_open %s : %s.\n",argv[1],sqlite3_errmsg(db));
- exit(EXIT_FAILURE);
- }
- while(1)
- {
- printf("sqlite >");
- fgets(sql_buf,sizeof(sql_buf),stdin);
- sql_buf[strlen(sql_buf) - 1] = '\0';
- if(strncmp(sql_buf,"quit",4) == 0)
- break;
- exec_sql_string(sql_buf,db);
- }
- result = sqlite3_close(db);
- if(result != 0)
- {
- fprintf(stderr,"Fail to sqlite3_open %s : %s.\n",argv[1],sqlite3_errmsg(db));
- exit(EXIT_FAILURE);
- }
- exit(EXIT_SUCCESS);
- }
运行结果:
sqlite3的基本操作相关推荐
- Sqlite3 数据库基本操作
Sqlite3 数据库基本操作 1.sqlite3命令 **2.sqlite3编程接口:** 3.事务:一个或多个更改数据库的扩展 4.like和glob子句: 5.limit 和 offset 6. ...
- sqlite3之基本操作(二)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.S ...
- python创建sqlite3数据库_Python之Sqlite3数据库基本操作
在一些小的应用中,难免会用到数据库,Sqlite数据库以其小巧轻便,无需安装,移植性好著称,本文主要以一个简单的小例子,简述Python在Sqlite数据库方面的应用,仅供学习分享使用,如有不足之处, ...
- ios中SQLite3的基本操作
本文转自:http://blog.csdn.net/eduora_meimei/article/details/24299133 iOS关于sqlite3操作 iPhone中支持通过sqlite3来访 ...
- windows下sqlite3的基本操作
1.下载命令行,并安装,立即下载>>: 2.创建一个数据库: 3.创建一张表: 4.插入.查询.更新.删除行记录: 5.事务相关: begin transaction[name]; . ...
- 08.QT中sqlite3数据库基本操作
Qt版本数据库操作 1 创建项目时选择sql模块 2 简易效果图如下 3 代码如下图所示 #include "SqliteDemo.h" #include <QtSql/QS ...
- 浅显易懂 SQLite3 笔记(01)— SQLite3简介及基本操作
文章目录 前言 一.SQLite数据库 1.什么是SQLite? 2.为什么要用SQLite? 3.如何使用SQLite? 二.SQLite语言及基本操作 1.SQLite命令 2.SQLite类型 ...
- SQLite3基本使用从shell到python
SQLite是一个轻量级的关系型数据库,在訪问量不超过10万PV的中小站点中使用绰绰有余. 并且使用方便,接口简单,以下从命令行和python接口双方面介绍SQLite3的基本操作. 在linux终端 ...
- C语言-打卡机(sqlite数据库、多线程)
C语言-打卡机 一.功能 1.上班打卡 2.下班打卡 3.设置每日工作时长 4.测试需要6s=1h 5.弹性打卡制 6.周报 二.整体构思 三.自定义时间 四.Sqlite3数据库基本操作(增删改查) ...
最新文章
- MVC架构接收jsp页面传值
- 270 扩展固态硬盘_游戏人的扩展坞应该是怎样?
- 吴恩达深度学习笔记 2.6~2.9 logistic中的梯度下降
- 【Qt教程】1.3 - Qt5 工程文件的功能解读、快捷键
- [转载] python sorted 使用cmp函数时候注意cmp需要传入两个参数,传入两个参数机制的分析
- js实现键盘按键映射
- UPC6615: Snuke Festival
- gst-launch-1.0在Linux下的命令
- 微信WIFI小程序开发
- 版本 87.0.4280.66_iOS 14.2 Beta 2发布,修复闪退与优化改进
- 苹果手机相机九宫格怎么设置_用苹果手机拍照,这3个媲美单反的设置不会用,就别说自己用苹果...
- Java学习系列之抽象类和接口的区别和联系
- SCX-4521F一体机MAC驱动
- 基于生态农业的电子商务微信小程序毕业设计(论文)
- 【172. 阶乘后的零】
- 【服务器数据恢复】RAID5多块硬盘离线但是热备盘未激活导致RAID崩溃的数据恢复案例
- 如何查看windows 10 神州网信政府版的版本信息
- piinyin4j的使用 把中文转成拼音
- 京东低代码平台:水滴表单联动可视化配置的实现与思考
- 数据结构与算法之链表(Java版)
热门文章
- 阿里云胡晓明:数据智能将为城市生活带来真正价值
- SpringMVC视图解析器(转)
- TOUGHRADIUS 项目介绍
- 求 s=a+aa+ aaa+ aaaa +aaaaa+........的值,a是从键盘输入的,项数也为键盘输入
- 关于Android错误 View requires API level 14 (current...
- 一道C#类型转换的思考题
- 使用use index优化sql查询
- Stimulsoft reports .net中创建变量
- [转]ASP中ActiveX控件的内嵌及调用
- h5页 点击返回时关闭_在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口...