`
ileson
  • 浏览: 210671 次
  • 性别: Icon_minigender_1
  • 来自: 河南省
社区版块
存档分类
最新评论

sqlite 入门备忘

阅读更多
初识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();
		}
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics