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

[经验分享] sqlite 增删改查加事务

[复制链接]

尚未签到

发表于 2016-11-30 07:01:15 | 显示全部楼层 |阅读模式
  说明: 下面的代码演示了如何对 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 的使用. 一个文件搞定. 搞多了文件, 也看不清.
  应该没有什么问题了吧?

运维网声明 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-307312-1-1.html 上篇帖子: SQLite不支持的SQL特性 下篇帖子: 如何高效使用SQLite .net (C#)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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