设为首页 收藏本站
查看: 945|回复: 0

[经验分享] sqlite 入门备忘

[复制链接]

尚未签到

发表于 2016-11-29 06:09:02 | 显示全部楼层 |阅读模式
初识sqlite 翻了好多资料。终于搞明白怎么回事了,记录一下。备查。
1、官网【sqlite.org】上面文件说明:
   ①:Source Code源代码就在这个压缩包里
   sqlite-amalgamation-3071300.zip(1.33 MiB)。其中有四个文件分别为:shell.c、sqlite3.c、sqlite3.h、sqlite3ext.h;这就是sqlite C的源代码了。
   ②:动态库
sqlite-dll-win32-x86-3071300.zip这个包里有两个文件:sqlite3.def、sqlite3.dll
2、C/C++调用
现在光有这些文件还是不够的,根据上面的文件生成链接库文件。(其实有源码已经够了,但建议最好生成各平台的库文件,因程序编译时源文件很慢,弄成库调用就很快了。)
引用
Codeblocks()
1.用GCC,生成.a文件;先将sqlite3.c放到gcc工具的bin目录下。
gcc -c sqlite3.c -o sqlite3.o
ar rcs libsqlite3.a sqlite3.o  //生成我要的libsqlite3.a 静态库文件

2.将libsqlite3.a,sqlite3.h文件放在Codeblocks的工程目录中;
3.Build option->Linker settings->Link librarys增加libsqlite3.a;
4.Build option->Search Directories->Linker点击Add按钮,添加当前目录;
5.OK.
Codeblocks注意一点:如果在设置Build option时,注意一下左边选择,我是选择了Debug和Release上面的项目名称添加的,所以又点了Copy all to…按钮将配置复制到Debug和Release。

#include <stdio.h>
#include "sqlite3.h"
int main(void){
sqlite3 *pDB=NULL;
int ret=sqlite3_open("fuck.db",&pDB);
if(ret==SQLITE_OK){
printf("sqlite3,打开成功!");
}
sqlite3_close(pDB);
return 0;
}


在VC6下:
将sqlite3.dll和sqlite3.def放到:d:\Microsoft Visual Studio\VC98\Bin下
然后dos命令提示 定位到上面的这个目录上
输入命令:
D:\Microsoft Visual Studio\VC98\Bin>lib /def:sqlite3.def /machine:ix86
回车,然后在该目录下就会看到生成了两个文件(sqlite3.exp、sqlite3.lib)
调用 :先将sqlite3.h、sqlite3.dll、sqlite3.lib放到vc工程目录下。
main.c
#include <stdio.h>
#include "sqlite3.h"
#pragma comment(lib,"sqlite3.lib")
int main(void){
sqlite3 *pDB=NULL;
int ret=sqlite3_open("fuck.db",&pDB);
if(ret==SQLITE_OK){
printf("打开成功!");
}
sqlite3_close(pDB);
return 0;
}
引用
小注:windows 与linux 下链接文件对比
类型WindowsLinux
静态库lib(library)a(archived file)
动态库dllso(shared object)

比较完好的C Sqlite3 API学习:入门API


3、Java (JDBC)调用
   ①下载jdbc驱动包
        sqlitejdbc-v056.jar
   ②代码
   
package com.leson.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class SQLiteHelper {
private String url;
private String dbname;
private String path;
/**
* 得到Connection 对象
* @return
*/
public  Connection getConn(){
Connection conn=null;
try {
Class.forName("org.sqlite.JDBC");
conn=DriverManager.getConnection("jdbc:sqlite:e:/test.db");//如果没有自动创建test.db
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 查询
* @param conn
* @param sql
* @return List<Map<String,Object>>([{},{}])
*/
public List<Map<String,Object>> execQuery(Connection conn,String sql){
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
PreparedStatement ps=null;
ResultSet rs=null;
try {
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
int columnCount=rsmd.getColumnCount();//结果集共多少列
while(rs.next()){
Map<String, Object> ht=new LinkedHashMap<String, Object>();
for(int i=1;i<=columnCount;i++){
ht.put(rsmd.getColumnName(i), rs.getString(i));
}
list.add(ht);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
rs.close();
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
/**
* 增、删、改
* @return
*/
public synchronized int execUpdate(Connection conn,String sql){
int res=0;
PreparedStatement ps=null;
try {
ps=conn.prepareStatement(sql);
res=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return res;
}
/**
* 多条sql语句的批处理。
* @param conn
* @param sqls
* @return
*/
public synchronized int execBatch(Connection conn,String[] sqls){
Statement sm=null;
try {
sm=conn.createStatement();
for(String sql:sqls){
sm.addBatch(sql);
}
sm.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
sm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return 0;
}
/**
* 测试本类的方法
* @param args
*/
public static void main(String args[]){
SQLiteHelper sh=new SQLiteHelper();
Connection conn=sh.getConn();
//String[] sqls=new String[3];
//String sql1 ="create table test(id,name);";
//String sql2="insert into test(id,name) values('1','张三')";
//String sql3="insert into test(id,name) values('2','李四')";
//sqls[0]=sql1;
//sqls[1]=sql2;
//sqls[2]=sql3;
//sh.execBatch(conn, sqls);
//-------------------------
String sql="select * from test;";
List<Map<String,Object>> list=sh.execQuery(conn, sql);
System.out.println(list);
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306776-1-1.html 上篇帖子: SQLite源码剖析(6) 下篇帖子: SQLite数据库约束详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表