`

sqlite 增删改查加事务

阅读更多

说明: 下面的代码演示了如何对 sqlite 数据库的操作..

注意:

    1. 数据库名 pmm_cz 你可以任意修改成你自己的. 无论是否存在都可以. 因为如果存在, 则不会再创建. 如果不存在, 则新创建一个.

    2. 表名也可以任意取. 表里的字段名也可以任意取. 我这里只是演示我自己的环境中的. 至于表的创建, 你可以使用 SQLite Expert Personal 这个可视化的编辑器创建.

    3. 开发环境 myeclipse 8.5 + jdk 1.6

        1) 创建一个 java project 或 web 都可以.

        2) 在 http://www.zentus.com/sqlitejdbc/ 中下载 sqlite 驱动 jar 包, 然后添加到 myeclise 的 Builder path 即可.. 我下的是: sqlitejdbc-v056.jar

 

package blrise.emcs.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import org.junit.Test;

public class SqliteTest {
	
	/**
	 * 测试获取 Connection
	 * @throws Exception
	 */
	@Test
	public void testGetConnection() throws Exception {
		Class.forName("org.sqlite.JDBC");
		Connection conn = DriverManager.getConnection("jdbc:sqlite:d:pmm_cz.db");
		System.out.println(conn);
	}
	
	/**
	 * 测试获取结果集
	 * @throws Exception
	 */
	@Test
	public void getQueryAllData() throws Exception {
		Class.forName("org.sqlite.JDBC");
		Connection conn = DriverManager.getConnection("jdbc:sqlite:d:pmm_cz.db");
		String sql = "select * from WM_EQUI_TYPE";
		Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery(sql);
		while (rs.next()) {
			System.out.println(rs.getString("eq_type") + " :: " + rs.getString("eq_type_name"));
		}
	}
	
	/**
	 * 测试插入数据
	 * @throws Exception
	 */
	@Test
	public void testInsert() throws Exception {
		Class.forName("org.sqlite.JDBC");
		Connection conn = DriverManager.getConnection("jdbc:sqlite:d:pmm_cz.db");
		String sql = "insert into WM_EQUI_TYPE (eq_type, eq_type_name) values (?, ?)";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, "4");
		pstmt.setString(2, "ddd");
		pstmt.execute();
		System.out.println("Done.");
	}
	
	/**
	 * 测试删除数据
	 * @throws Exception
	 */
	@Test
	public void testDelete() throws Exception {
		Class.forName("org.sqlite.JDBC");
		Connection conn = DriverManager.getConnection("jdbc:sqlite:d:pmm_cz.db");
		
//		String sql = "delete from WM_EQUI_TYPE where eq_type = ?";
		String sql = "delete from WM_EQUI_TYPE";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		//pstmt.setString(1, "4");
		pstmt.execute();
		System.out.println("Done.");
	}
	
	/**
	 * 测试修改数据
	 * @throws Exception
	 */
	@Test
	public void testUpdate() throws Exception {
		Class.forName("org.sqlite.JDBC");
		Connection conn = DriverManager.getConnection("jdbc:sqlite:d:pmm_cz.db");
		String sql = "update WM_EQUI_TYPE set eq_type_name = ? where eq_type = ?";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, "test");
		pstmt.setString(2, "3");
		pstmt.execute();
		System.out.println("Done.");
	}
	
	/**
	 * 测试批处理添加
	 * @throws Exception
	 */
	@Test
	public void testBatch() throws Exception {
		Class.forName("org.sqlite.JDBC");
		Connection conn = DriverManager.getConnection("jdbc:sqlite:d:pmm_cz.db");
		String sql = "insert into WM_EQUI_TYPE (eq_type, eq_type_name) values (?, ?)";
		PreparedStatement pstmt = conn.prepareStatement(sql);
		for (int i=1; i<=10; i++) {
			pstmt.setString(1, i + "type");
			pstmt.setString(2, i + "typeName");
			pstmt.addBatch();
		}
		pstmt.executeBatch();
		System.out.println("Done.");
	}
	
	/**
	 * 测试事务
	 * @throws Exception
	 */
	@Test
	public void testTransaction() throws Exception {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			Class.forName("org.sqlite.JDBC");
			conn = DriverManager.getConnection("jdbc:sqlite:d:pmm_cz.db");
			conn.setAutoCommit(false);
			String sql = "insert into WM_EQUI_TYPE (eq_type, eq_type_name) values (?, ?)";
			pstmt = conn.prepareStatement(sql);
			for (int i=1; i<=10; i++) {
				pstmt.setString(1, i + "type");
				pstmt.setString(2, i + "typeName");
				pstmt.addBatch();
				if (i == 9) {
					throw new RuntimeException();
				}
			}
			pstmt.executeBatch();
			System.out.println("Done.");
			conn.commit();
		} catch (Exception e) {
			e.printStackTrace();
			conn.rollback();
			throw e;
		} finally {
			release(conn, pstmt, rs);
		}
	}
	
	public void release(Connection conn, PreparedStatement pstmt, ResultSet rs) {
		try {
			if (conn != null) {
				conn.close();
			}
			conn = null;
			
			if (pstmt != null) {
				pstmt.close();
			}
			pstmt = null;
			
			if (rs != null) {
				rs.close();
			}
			rs = null;
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

1. 因为是单元测试, 并且声明了抛出异常所以没有对异常进行处理. 其实也不需要进行处理, try...catch 住了直接往外抛即可..

2. 其实没必要每个单元测试类中写获取连接之类的操作. 完全可以写一个工具类来实现.这里为了偷懒了. 全写一块了.

重点只是演示了 sqlite 的使用. 一个文件搞定. 搞多了文件, 也看不清.

应该没有什么问题了吧?

分享到:
评论

相关推荐

    C# SQLite3增删改查Demo

    本篇将重点介绍如何使用C#语言进行SQLite3的增删改查操作,这对于初学者来说是一次极好的实践机会。 首先,我们要理解C#与SQLite3的集成。C#通过SQLite的.NET数据提供程序(System.Data.SQLite)来与SQLite交互。...

    IOS sqlite 完成增删改查

    为了实现增删改查的功能,我们需要编写以下关键方法: 1. **添加**:创建一个新的对象,设置其属性,然后调用SQLite管理类的`insertUser:`方法,将对象转换为SQL语句并执行。 2. **修改**:获取选中对象,更新其...

    sqlite 增删改查简单示例

    SQLite 是一个轻量级的、开源的嵌入式...以上就是 SQLite 增删改查的基本操作。在实际应用中,你可能还需要学习更多高级特性,如事务处理、索引、视图等。通过实践,你可以更好地理解和掌握 SQLite 数据库的使用。

    android SQLite增删改查及事务处理

    这篇内容将深入讲解如何在Android中使用SQLite进行数据的增删改查(CRUD)操作以及事务处理。 首先,我们来了解SQLite在Android中的基本使用。每个Android应用都有一个SQLiteOpenHelper的子类,这个类主要用于创建...

    sqlite增删改查

    SQLite支持SQL标准,包括了增、删、改、查(CRUD)等基本操作。下面我们将详细探讨这四个方面的内容,基于提供的四个示例文件`delete.c`、`query.c`、`insert.c`和`opendbsqlite.c`。 1. **创建数据库和表** 在...

    androidSQLite增删改查及事务处理

    在这个"androidSQLite增删改查及事务处理"的demo中,我们将探讨如何进行基本的数据库操作以及事务处理。 **1. 创建SQLite数据库** 首先,我们需要创建一个SQLiteOpenHelper的子类,这个类帮助我们管理数据库的版本...

    Android SQLite 增删改查操作实例

    本实例将详细讲解如何在Android中进行SQLite数据库的增删改查(CRUD)操作。 **创建SQLite数据库** 首先,我们需要创建一个SQLite数据库。在Android中,我们通常通过继承`SQLiteOpenHelper`类来实现。这个类提供了...

    Sqlite增删改查案例

    在这个“SQLite增删改查案例”中,我们将深入探讨如何在Android环境下利用SQLite进行数据操作。 1. **SQLite数据库创建**: 在Android中,我们通常通过继承`SQLiteOpenHelper`类来创建和管理SQLite数据库。这个类...

    C#操作SQLite的增删改查等功能

    本文将深入探讨如何在C#中进行SQLite数据库的增删改查操作。 首先,要使用C#操作SQLite,你需要引入相应的NuGet包,如`System.Data.SQLite`。在Visual Studio中,可以通过右键项目 -&gt; 管理NuGet程序包 -&gt; 搜索...

    SQLite 增删改查的工具类

    以上就是创建SQLite增删改查工具类的基本步骤。在实际应用中,你可能需要根据具体需求对这些方法进行扩展,比如添加查询单个记录、按条件查询等。此外,为了保持代码的整洁和可维护性,可以考虑将SQL语句封装到常量...

    Android储存---SQLite数据库的简单使用,实现增删改查

    本教程将深入讲解如何在Android中使用SQLite数据库进行基本的增删改查操作。 首先,我们需要在Android项目中创建一个SQLite数据库。这通常通过继承`SQLiteOpenHelper`类来完成。`SQLiteOpenHelper`有两个关键的方法...

    安卓sqlite增删改查源码

    在Android Studio中,开发者可以利用SQLite进行数据的增删改查操作,以实现本地数据持久化。本教程将深入讲解如何在Android Studio中使用SQLite进行数据库操作。 首先,我们需要创建一个SQLiteOpenHelper的子类,这...

    C# 对SQLite数据库的增删改查基础功能

    在本文中,我们将深入探讨如何使用C#编程语言在Visual Studio 2022中实现对SQLite数据库的增删改查(CRUD)基础功能。SQLite是一个轻量级的、自包含的、开源的关系型数据库管理系统,适用于各种应用场景,包括移动...

    Android 操作数据库SQLite 增删改查demo

    这个"Android操作数据库SQLite增删改查demo"应该包含了创建数据库、定义表、插入数据、查询数据、更新数据和删除数据的基本操作,以及一些最佳实践。对于初学者来说,这是一个很好的起点,有助于理解和掌握Android中...

    qt中sqlite的增删改查的使用

    以下将详细介绍如何在Qt中使用SQLite进行增、删、改、查操作。 ### 增加(Insert) 在Qt中,我们首先需要打开一个SQLite数据库,然后创建一个`QSqlDatabase`对象。接下来,创建`QSqlQuery`对象来执行SQL插入语句。...

    android SQLite 增删改查小例子

    在这个“android SQLite 增删改查小例子”中,我们看到一个用于图书管理的应用实例,该应用利用SQLite进行数据操作。下面将详细解释如何在Android中使用SQLite进行基本的增、删、改、查操作。 1. **...

    无废话Android 系列教程34 [使用系统api实现SQLite增删改查&&测试]

    本教程将深入探讨如何使用系统API实现SQLite数据库的增删改查操作,并进行相关的测试。以下是对这个主题的详细讲解: 一、SQLite数据库基础 SQLite是Android系统内置的SQL数据库引擎,无需单独安装。开发者可以创建...

    android利用sqlite实现增删改查

    在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的数据库系统,适用于移动...当然,实际应用中可能还需要考虑数据同步、数据加密、事务处理等更高级的特性,但以上内容已经涵盖了基本的增删改查操作。

    SQLite增删改查

    本教程将深入探讨如何在Android中执行SQLite的增、删、改、查(CRUD)操作。 ### 一、SQLite简介 SQLite是一个自包含、无服务器、零配置、事务型的SQL数据库引擎。它的设计目标是提供一个嵌入式、轻量级的数据存储...

    Android本地数据存储之SQLite增删改查

    本篇文章将深入探讨如何在Android中使用SQLite进行基本的增删改查操作,以实现高效的数据管理。 SQLite是一个开源的、关系型的数据库,它不需要单独的服务进程,可以直接嵌入到Android应用中,提供了事务处理、索引...

Global site tag (gtag.js) - Google Analytics