`
ileson
  • 浏览: 214903 次
  • 性别: 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();
		}
	}
}

分享到:
评论

相关推荐

    一个简单的Android备忘录.zip

    备忘录应用通常会使用SQLite来存储用户的备忘录条目,包括标题、内容和创建时间等信息。你可以创建一个数据库帮助类,处理数据的增删查改操作。 5. **用户界面设计**: 使用XML布局文件,你可以设计备忘录应用的...

    基于安卓开发的备忘录学年设计文档(已通过老师审核)

    - **SQLite数据库的使用**:学生需要学会如何在Android应用中集成SQLite数据库,包括数据库的创建、数据的插入、查询、更新和删除等操作。 - **SQLiteOpenHelper类的应用**:SQLiteOpenHelper是Android提供的一个...

    这是一个备忘本

    根据提供的文件信息,标题为“这是一个备忘本”,描述中提到这是一项简单的入门技术,并强调其为一次性应用。由于描述中的信息相对有限且标签为空,这部分内容似乎包含了一些乱码或者非标准字符,因此难以直接从中...

    Android手机备忘录的设计和实现开题报告.doc

    2. 数据存储:可以利用SQLite数据库管理系统存储备忘录数据,或采用Google Firebase等云服务实现数据同步。 3. 用户界面设计:遵循Material Design指南,创建直观、友好的用户界面。 4. 提醒功能:利用Android系统的...

    Android手机备忘录的设计与实现开题报告.pdf

    1. **备忘录数据存储**:这一模块负责存储用户的备忘信息,可能采用SQLite数据库来实现本地存储,确保数据的安全性和可靠性。 2. **数据共享访问**:允许用户在不同设备之间同步备忘录数据,可能通过集成Google云端...

    Android备忘录记事本,又加工了一下

    在Android平台上,开发一款记事本或备忘录应用是一个常见的练习项目,它能帮助用户记录日常生活中的琐事。这个项目名为"SimpleNotePad",显然是一款基础的文本编辑应用,适合初学者入门学习。接下来,我们将深入探讨...

    Tejas-SCL-maxo:世界康佳尼中心举办的为期50天的Hackathon Sushiksha编码联盟的Tejas团队的官方资料库

    您所有的备忘单,参考书和实践论文都集中在一个地方! ·· 目录 关于该项目项目介绍 入门 安装 发展 贡献/添加功能 关于该项目 项目介绍 后端框架: Django 前端框架: Bootstrap 使用的数据库: Sqlite ...

    Android备忘

    ### Android备忘知识点详解 #### 一、为什么选择Android移动(游戏)开发? **市场角度:** 1. **用户基数庞大:** Android操作系统是全球市场份额最大的智能手机操作系统之一,这意味着开发者可以触及更多的潜在...

    安卓时间表提醒的系统

    开发者可以使用SQLite数据库来存储用户的日程、提醒和备忘录数据,然后通过ContentProvider对外提供数据访问接口。通过查询和分析数据库中的数据,可以生成各种报表,例如一周的工作时间统计、每月的会议次数等。...

    一个简单的便签app

    通过分析这个简单的便签app,我们可以学习到Android应用开发的基础知识,包括UI设计原则、数据持久化、组件生命周期、用户交互处理等,这对于想要入门Android开发的初学者来说是非常宝贵的实践案例。同时,对于经验...

    RasaHost:Rasa Nlu和Rasa Core的ui和主机

    入门非常容易,您只需指定MD文件的路径即可。 无需迁移。 该工具使用标准Rasa格式。 它不依赖于Rasa版本。 记录对话 所有日志和对话都保存在SQLite中。 您只需要创建一个代理并将其绑定到主机即可。 日志记录...

    家庭理财通源码

    9. **收支便签**:这是为用户提供快速记账的功能,类似于备忘录,方便用户记录临时的收支情况,可能采用了简单的文本输入和存储机制。 10. **版本控制**:虽然未明确提及,但开发过程中通常会使用版本控制系统,如...

    Android最佳学习路线图

    3. Android基础入门:学习Android平台的基础知识,包括Android环境的搭建、使用Android命令工具、创建第一个Android应用程序、设计用户界面(UI),以及使用UI组件。 4. Android平台深入学习:需要深入理解Android...

    android应用开发详解 郭宏志编著 pdf格式

    - **SQLite数据库**:教授如何利用SQLite实现复杂的数据存储需求。 - **文件存储**:讲述如何利用内部存储和外部存储保存文件。 **第十章:Content Provider** - **Content Provider概述**:解释Content Provider...

Global site tag (gtag.js) - Google Analytics