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目录下。
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。
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 下链接文件对比
比较完好的C Sqlite3 API学习: 入门API
类型 | Windows | Linux |
静态库 | lib(library) | a(archived file) |
动态库 | dll | so(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(); } } }