sqlite数据库基本操作语句,如何用VB操作SQLite数据库?
sqlite数据库基本操作语句,如何用VB操作SQLite数据库?详细介绍
本文目录一览: sqlite3常用命令以及django如何操作sqlite3数据库
1、确认sqlite3是否已经安装进去python命令行,执行>>>importsqlite3>>>没有报错,说明sqlite3已经成功安装了2、如何进入sqlite3命令行sqlite3/path/to/dbname直接执行sqlite3 加数据库名即可~sqlite3~/Downloads/django_test/cmdb/db.sqlite3sqlite3SQLiteversion3.14.02016-07-2615:17:14Enter".help"forusagehints.sqlite>3、.tables :查看所有表sqlite>.tablesauth_groupdjango_content_typeauth_group_permissionsdjango_migrationsauth_permissiondjango_sessionauth_userucloud_projectauth_user_groupsucloud_regionauth_user_user_permissionsucloud_uhostdjango_admin_logucloud_zone4、查询表中总的数据条目数selectcount()fromTableName;例如:sqlite>selectcount()fromucloud_zone;11sqlite>selectcount()fromucloud_uhost;147sqlite>selectcount()fromucloud_project;105、执行多条查询语句sqlite>select...>(selectcount(1)fromucloud_uhost)asuhost,...>(selectcount(1)fromucloud_project)asproject,...>(selectcount(1)fromucloud_region)asregion...>;147|10|86、格式化输出您可以使用下列的点命令来格式化输出为本教程下面所列出的格式:sqlite>.headeronsqlite>.modecolumnsqlite>.timeronsqlite>更多命令查看:http://www.runoob.com/sqlite/sqlite-commands.html 二、python如何执行sqlite查询命令python执行sqlite命令的流程:1、cx=sqlite3.connect("db.sqlite3)创建或打开数据库文件,如果数据库文件不存在,则创建,存在,则打开该文件。cx为数据库连接对象,它可以有以下操作: commit()--事务提交 rollback()--事务回滚 close()--关闭一个数据库连接 cursor()--创建一个游标2、cursor=cx.cursor()定义了一个游标。游标对象有以下的操作: execute()--执行sql语句 executemany--执行多条sql语句 close()--关闭游标 fetchone()--从结果中取一条记录 fetchmany()--从结果中取多条记录 fetchall()--从结果中取出多条记录 scroll()--游标滚动 关于对象的方法可以去 Python 主页上查看DB API的详细文档3、cursor.execute("""...select...(selectcount(1)fromucloud_uhost)asuhost...""")cursor.execute(sql语句)是执行sql语句4、cursor.close()关闭游标下面是操作数据库的过程>>>importsqlite3>>>fromdjango.dbimportconnectionscx=sqlite3.connect("/Users/cengchengpeng/Downloads/django_test/cmdb/db.sqlite3")cursor=cx.cursor()>>>cursor
>>>cursor.execute("""...select...(selectcount(1)fromucloud_uhost)asuhost,...(selectcount(1)fromucloud_project)asproject,...(selectcount(1)fromucloud_zone)aszone...""")
>>>cursor.description((‘uhost‘,None,None,None,None,None,None),(‘project‘,None,None,None,None,None,None),(‘zone‘,None,None,None,None,None,None))>>>columns=[_[0].lower()for_incursor.description]>>>columns[‘uhost‘,‘project‘,‘zone‘]>>>for_incursor:...print_...(147,10,11)>>>results=[dict(zip(columns,_))for_incursor]>>>results>>>results[{‘project‘:10,‘zone‘:11,‘uhost‘:147}]>>>cursor.close()写python脚本,来执行sqlite语句#coding:utf-8fromdjango.dbimportconnectionsdefopen_sql_dict(sql,connection_name=‘default‘):dbs=connections[connection_name]cursor=dbs.cursor()cursor.execute(sql)columns=[_[0].lower()for_incursor.description]results=[dict(zip(columns,_))for_incursor]cursor.close()returnresults这里脚本里面,用到了zip()方法和dict()方法本文出自 “zengestudy” 博客,请务必保留此出处http://zengestudy.blog.51cto.com/1702365/1904680sqlite3常用命令以及django如何操作sqlite3数据库标签:sqlite
易语言sqlite数据库 一个查询的sql语句 该怎么写
你好:
利用Navicat创建SQLite数据库
步骤一、打开Navicat,点击文件,选择新建连接,选择SQLite,弹出界面,在连接名输入连接名称,类型根绝需要选择,若选现有的数据库文件,则需要在数据库文件选项中,找到相应的SQLite数据库文件,若选其他类型,则会新建一个数据库连接,需要在数据库文件选项,选择保存位置(SQLite与SQLite3两个版本)。下文连接名为SQLiteOperate,类型为SQLite3,数据库名为test.db,默认有一个数据库main。高级、HTTP中的用法自行研究或者查找资料。
步骤二、打开连接,右键附加数据库,选择刚才创建的数据库文件,然后打开,附加成功会在SQLiteOperate连接中出现一个新的数据库test,然后打开数据库test,到此,数据库创建完成。
步骤三、创建数据表
选中test数据库,点击右上栏的查询选项、新建查询、输入sql语句:create table if not exists user(_id integer primary key not null,name text not null,age integer not null,sex text not null)。创建表user,创建时判断该表是否存在,注意SQLite里只有null、integer、real(浮点数)、blob、text字符串。输入后点击运行按钮,此时会提示弹出窗口要求输入该查询的名字,例如create_SQL,运行后,打开test数据库,发现没有user表。不要怕,你可以再次运行SQL语句,会提示user表已经存在。是不是很诧异?不要怕,断开SQLiteOperate连接,然后再次打开连接,打开test数据库,你会发现SQLite就在那里。
步骤四、插入数据
新建查询,同步骤三中操作,输入插入数据的语句:insert into user(name,sex,age) values ('张三,'女',18),其中的_id为自增,省略即可,然后运行,打开数据表user,会发现数据插入成功,若运行前user表已打开,建议先关闭user表,再次打开。
步骤五、查询数据
同四,输入查询sql语句:查询所有内容:select * from user,查询指定条件所有内容:例如:select * from user where name='张三',查询指定条件的指定内容:例如:select name from user where age=18
步骤六、更新数据
同四新建查询,输入更新sql语句:更新某列所有值:例如:update user set age=18 ,更新指定条件的值:例如:update user set name='赵四' where name='张三'
步骤七、删除数据
同四新建查询,输入删除sql语句:例如:delete from stu where name='张三'
sqlite怎么使用数据库创建表
MySQL云数据库创建、配置与使用教程,五秒钟创建属于自己的mysql云数据库,申请地址:xmjar.cn
CREATE TABLE语句的基本语法如下:
1
2
3
4
5
6
7
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
CREATE TABLE是告诉数据库系统关键字,创建一个新的表。独特的名称或标识如下表CREATE TABLE语句。也可以选择指定DATABASE_NAME连同table_name。
例子:
下面是一个例子,创建了一个公司ID作为主键的表和NOT NULL的约束显示这些字段不能为NULL,同时创建该表中的记录:
1
2
3
4
5
6
7
sqlite> CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
创建一个表
1
2
3
4
5
sqlite> CREATE TABLE DEPARTMENT(
ID INT PRIMARY KEY NOT NULL,
DEPT CHAR(50) NOT NULL,
EMP_ID INT NOT NULL
);
如果表验证已成功创建使用SQLite命令.tables命令,将用于列出了附加的数据库中的所有表。
怎么向sqlite数据库里插数据?
INSERT INTO tableName(key_id, key_name, key_age)VALUES(1, "name", 100);
可用sql语句。
SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行。
语法:
INSERT INTO 语句有两种基本语法,如下所示:
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...valueN);在这里,column1, column2,...columnN 是要插入数据的表中的列的名称。
如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。SQLite 的 INSERT INTO 语法如下:
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
如何用VB操作SQLite数据库?
很简单,表名不要带下划线,即不要带“_”,建议修改表名,不然检索语句出错。
可能是ODBC方式,某些权限受到限制吧(比如不能查master表),这种方式我没用过,我现在是用vb.net,用connecting 、adapter 等访问的,这样好像没有遇到过问题。
例如:
Dim DataSource As String, sql As String
Dim conn As SQLite.SQLiteConnection
DataSource = Application.StartupPath + "\StoreExecl.db"
' //连接数据库
conn = New SQLite.SQLiteConnection()
Dim connstr As SQLite.SQLiteConnectionStringBuilder = New SQLite.SQLiteConnectionStringBuilder()
connstr.DataSource = DataSource
Try
conn.ConnectionString = connstr.ToString()
conn.Open()
Me.RTxt1.Text = "系统已连接本地数据库,成功!"
catch
endtry
在Android应用程序中使用SQLite数据库以及怎么用
其主要思路是:
1. 把数据库分解成几个asset文件。
2. 当需要打开数据库时,如果数据库不存在,就把那几个asset文件重新合并成一个数据库文件。
3. 如果数据库的版本改变了,就在onUpgrade()方法中把数据库文件删除掉。
下面是代码:
//数据库的缺省路径
private static finalString DB_PATH = "/data/data/com.mypackage.myapp/databases/";
private static finalString DB_NAME = "mydb.db";
private static finalint DB_VERSION = 2;
private static finalString DB_SPLIT_NAME = "mydb.db.00";
private static finalint DB_SPLIT_COUNT = 3;
private SQLiteDatabasem_database;
private final Contextm_context;
/**
* Constructor
*保存传进来的context参数以用来访问应用的asset和资源文件。
* @param context
*/
public MyDB(Contextcontext) {
super(context, DB_NAME, null, DB_VERSION);
this.m_context = context;
}
public static MyDBopenDatabaseReadOnly(Context context) {
MyDB db = new MyDB(context);
try {
db.createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
db.openDataBase(SQLiteDatabase.OPEN_READONLY);
return db;
}
public static MyDBopenDatabaseReadWrite(Context context) {
MyDB db = new MyDB(context);
try {
db.createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
db.openDataBase(SQLiteDatabase.OPEN_READWRITE);
return db;
}
/**
*创建一个空数据库,用来存储已有的数据库。
*/
public voidcreateDataBase() throws IOException{
boolean dbExist =checkDataBase();
if (dbExist) {
/*
**如果自己的数据库的版本改变了,调用这个方法确保在onUpgrade()被调用时
**传进去的是可写的数据库。
*/
SQLiteDatabase db =this.getWritableDatabase();
if (db != null) {
db.close();
}
}
dbExist = checkDataBase();
if (!dbExist) {
try {
/*
** 调用这个方法以确保在缺省路径内产生一个空数据库,以便在其基础上复制咱们已有的数据库。
*/
SQLiteDatabase db =this.getReadableDatabase();
if (db != null) {
db.close();
}
copyDataBase();
}
catch (IOException e) {
Log.e("DB", e.getMessage());
throw new Error("Error copyingdatabase");
}
}
}
/**
* 检查数据库是否已存在,以避免重复复制。
* @return true if it exists, false if itdoesn't
*/
private static booleancheckDataBase(){
SQLiteDatabase checkDB = null;
try {
String path = DB_PATH + DB_NAME;
checkDB =SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
}
catch (SQLiteException e){
//database does't exist yet.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
/**
* 把存在asset文件中的数据库复制的刚创建的空数据库中。
* */
private voidcopyDataBase() throws IOException {
// 刚创建的空数据库的路径
String outFileName = DB_PATH + DB_NAME;
// 打开空数据库
OutputStream output = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024*8];
AssetManager assetMgr =m_context.getAssets();
for (int i = 1; i <= DB_SPLIT_COUNT; i++){
// 打开分解的asset文件
String fn = DB_SPLIT_NAME +String.valueOf(i);
InputStream input = assetMgr.open(fn);
//Log.i("DB", "opened" + fn);
int length;
while ((length = input.read(buffer)) >0) {
//Log.i("DB", "read" + String.valueOf(length));
output.write(buffer, 0, length);
//Log.i("DB", "write" + String.valueOf(length));
}
input.close();
}
//Close the streams
output.flush();
output.close();
}
/**
怎么加密和解密sqlite数据库
(1)加密数据库
下载后,和普通版sqlite一样,也是一个可执行文件,操作方法稍微不同,普通sqlite数据库操作语句为:>sqlite3 test.db
使用这个加密版sqlite则需要这样做:
>sqlite.exe test.db #这样就生成一个新数据库,普通数据库
>.changepass pass #这句就给当前数据库加上了密码,下次打开要用下面的语句
>sqlite.exe pass test.db
这样就将test.db加密了,密码为pass。加密之后可以进行普通的操作,如创建表,插入数据,查询等,语句和普通不加密版的sqlite语句完全一样
(2)改变密码
打开一个加密数据库后,在命令输入如下命令就可改变密码:
>.changepass newpass
这样test.db的打开密码就变成了newpass
(3)删除密码恢复为普通数据库
使用如下命令即可将密码消除,这样该数据库又变成了普通数据库,可以用sqlite3命令操作了。
>.changepass
如何使用另一个类SQLite数据库管理类get方法
1. SQLite数据库特点
(1)SQLite数据库是开源的嵌入式数据库,无需独立的数据库引擎,直接嵌入到应用程序进程中,因此,通过API,应用程序可以直接操作它。
(2)事务的处理是原子的,一致的,独立的,可持久化的(ACID),即使在系统崩溃和掉电后。
(3)SQLite数据库通过独占性与共享锁来实现事务的独立处理。
(4)一个单独的跨平台的磁盘文件就能够存储一个数据库。
(5)能支持2TB级的数据。
(6)自包含,无外部依赖性。
(7)支持NULL,INTEGER,NUMERIC,REAL,TEXT和BLOG等数据类型。
(8)SQLite数据库没有用户帐户的概念。数据库的权限仅依赖于文件系统。
2. SQLite数据库的基本操作
(1)建立数据库
sqlite3 data.sqlite3
在当前目录下建立了名为data.sqlite3的数据库。
(2)建立数据表
create table call_list (id INTEGER PRIMARY KEY, type NUMERIC,telnum NUMERIC,bttime TEXT,tcount NUMERIC,charge_rate NUMERIC,charge_sum NUMERIC);
建立了名为 call_list的数据表,有7个字段,分别为id,type,telnum,bttime,tcount,charge_sum.charge_rate.
(3)向数据表中插入数据
insert into call_list values ($num,1,2,'new',4,5,6);
(4)查询数据表中的数据
select * from call_list;
(5)修改call_list表中的数据
update call_list set id=00001000 where id=10001;
(6)删除表中的数据记录
delete from call_list where id=1000;
(7)SQlite中的其它常用命令
.tables -列出所有的数据库中的数据表
.schema tablename -列出指定数据表的结构
.quit -离开数据库
(8)SQLite数据库的导入与导出
a.将data.sqlite数据库的数据全部导出:
sqlite3 data.sqlite
>.output dd.sql
>.dump
这样,数据就保存在dd.sql的文件中,注意这个文件不是数据库,而是SQL语句。
然后再把这些数据导入到另外一个数据库data1.sqlite数据库中。
sqlite3 data1.sqlite
>.read dd.sql
这样,数据就从data.sqlite数据库复制到data1.sqlite数据库中去了。
b.将数据表中的数据导出到a.txt中去
.output a.txt //输出重定向到a.txt
select * from call_list;
c.将导出的表中的数据导入到另一个数据库的新建的表中去
如:当从data.sqlite中的call_list表中导出了数据,再导入到另外一个数据库表call中去。
首先建立表call.
然后.import a.txt call 即可。
3. C语言操作Sqlite数据库
API:
int sqlite3_open(const char* filename,sqlite3**ppdb);
第一个参数用来指定数据库文件名。
第二个参数是一个数据库标识符指针。
如果打开数据库成功,则返回0,否则返回一个错误代码。
int sqlite3_close(sqlite3*);
传递的参数是数据库标识符指针用来关闭数据库,操作成功是返回0,否则返回一个错误代码。
int sqlite3_errcode(sqlite3*db);
const char* sqlite3_errmsg(sqlite3* db);
const char* sqlite3_errmsg16(sqlite3* db);
这三个函数都是返回错误信息,第一个函数返回的是最近调用数据库接口的错误代码,第二,第三个函数是返回最近调用数据库接口的错误信息。第二个函数返回的错误信息是用UTF-8编码的,第三个函数返回的错误信息是用UTF-16编码的。
int sqlite3_exec(sqlite3*,const char*sql,int(*callback)(void*,int,char**,char**),void*,**errmsg);
这个函数非常重用,是用来执行SQLite数据库的SQL语句的。
第一个参数是sqlite数据库标识符指针。
第二个参数是要执行的SQL语句。
第三个参数是一个回调函数,在执行查询操作时用到,其它的操作可以传空值即NULL。
第四个参数是传递给回调函数第一个参数的实参。
第五个参数是一个错误信息。
如何在Linux下用C语言操作数据库sqlite3
下面我们看看怎么在C语言中向数据库插入数据。
好的,我们现编辑一段c代码,取名为 insert.c
// name: insert.c
// This prog is used to test C/C++ API for sqlite3 .It is very simple,ha !
// Author : zieckey All rights reserved.
// data : 2006/11/18
#include
#include
#include "sqlite3.h"
#define _DEBUG_
int main( void )
{
sqlite3 *db=NULL;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("zieckey.db", &db); //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
if( rc )
{
fprintf(stderr, "Can't open database: %s
", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
else printf("You have opened a sqlite3 database named zieckey.db successfully!
Congratulations! Have fun ! ^-^
");
//创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中
char *sql = " CREATE TABLE SensorData(
ID INTEGER PRIMARY KEY,
SensorID INTEGER,
SiteNum INTEGER,
Time VARCHAR(12),
SensorParameter REAL
);" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
#ifdef _DEBUG_
printf("%s
",zErrMsg);
#endif
//插入数据
sql = "INSERT INTO "SensorData" VALUES( NULL , 1 , 1 , '200605011206', 18.9 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
sql = "INSERT INTO "SensorData" VALUES( NULL , 1 , 1 , '200605011306', 16.4 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
sqlite3_close(db); //关闭数据库
return 0;
}
好的,将上述代码写入一个文件,并将其命名为 insert.c 。
解释:
sqlite3_exec的函数原型说明如下:
int sqlite3_exec(
sqlite3*,
const char *sql,
sqlite_callback,
void *,
char **errms
g
);
编译:
[root@localhost temp]# gcc insert.c -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include
insert.c:28:21: warning: multi-line string literals are deprecated
[root@localhost temp]#
执行
[root@localhost temp]# ./a.out
./a.out: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory
[root@localhost temp]#
同样的情况,如上文处理方法:
[root@localhost temp]# export LD_LIBRARY_PATH=/usr/local/sqlite3/lib:$LD_LIBRARY_PATH
[root@localhost temp]# ./a.out
You have opened a sqlite3 database named zieckey.db successfully!
Congratulations! Have fun ! ^-^
(null)
(null)
(null)
[root@localhost temp]#
运行成功了,好了,现在我们来看看是否插入了数据
[root@localhost temp]# /usr/local/sqlite3/bin/sqlite3 zieckey.db
SQLite version 3.3.8
Enter ".help" for instructions
sqlite> select * from SensorData;
1|1|1|200605011206|18.9
2|1|1|200605011306|16.4
sqlite>