java sqlite jdbc_JAVA使用SQLite——sqlitejdbc

这篇博客介绍了如何在Java中使用SQLite数据库,包括创建表、插入数据、删除表以及使用事务处理多条插入语句。文章指出SQLite不支持MySQL那样的批量插入语法,但可以通过预编译语句和事务来实现批量操作,以提高效率。此外,还讲解了如何检查表是否存在,以及SQLite的自增字段用法和分页查询方法。
摘要由CSDN通过智能技术生成

import java.sql.*;

public class Test {

public static void main(String[] args) throws Exception {

Class.forName("org.sqlite.JDBC");

Connection conn =

DriverManager.getConnection("jdbc:sqlite:test.db");

Statement stat = conn.createStatement();

stat.executeUpdate("drop table if exists people;");

stat.executeUpdate("create table people (name, occupation);");

PreparedStatement prep = conn.prepareStatement(

"insert into people values (?, ?);");

prep.setString(1, "Gandhi");

prep.setString(2, "politics");

prep.addBatch();

prep.setString(1, "Turing");

prep.setString(2, "computers");

prep.addBatch();

prep.setString(1, "Wittgenstein");

prep.setString(2, "smartypants");

prep.addBatch();

conn.setAutoCommit(false);

prep.executeBatch();

conn.setAutoCommit(true);

ResultSet rs = stat.executeQuery("select * from people;");

while (rs.next()) {

System.out.println("name = " + rs.getString("name"));

System.out.println("job = " + rs.getString("occupation"));

}

rs.close();

conn.close();

}

}

sqlite判断数据表存在用到的Sql语句

SELECT COUNT(*)  as CNT FROMsqlite_masterwhere type='table' and name='DBInfo' //其中DBInfo为需要判断的表名。注意大小写敏感!

SQLite jdbc封装类

SQLite一条SQL语句插入多条记录

为了减少数据库连接的I/O开销,一般会把多条数据插入放在一条SQL语句中一次执行。

以前用Mysql做开发一直是这样用的:

INSERT INTO TABLE(col1, col2) VALUES(val11, val12),(val21, val22) ;

最近用SQLite才发现这个语法并非标准SQL,故而SQLite并不支持。经过一番查找,发现如下方法可以替代:

INSERT INTO TABLE(col1, col2) SELECT val11, val12 UNION ALL SELECT val21, val22 ;

这样的写法是属于复合SQL语句,表示先把两个SELECT的结果集进行无删减的联合,再把联合结果插入到TABLE中。

sqlite不支持像mysql这样一条语句插入多条记录。

而sqlite是以文件的形式存在磁盘中,每次访问时都要打开一次文件,如果对数据进行大量操作时,会很慢~

解决办法是用事务的形式提交:因为我们开始事务后,进行大量操作的语句都保存在内存中,当提交时才全部写入数据库,此时,数据库文件也就只用打开一次。

sql语句:

begin;

INSERT INTO "table" VALUES ('a', 'b', 'c');

INSERT INTO "table" VALUES ('a', 'b', 'c');

INSERT INTO "table" VALUES ('a', 'b', 'c');

commit;

php语句:

$i= 0;

$db->beginTransaction();

while($i<10){

$sql="INSERT INTO 'table' VALUES ('a', 'b', 'c')";

$db->exec($sql);

$i++;

}

$db->commit();

sqlite自增字段的写法

SQLite自增ID自段使用方法为 INTEGER PRIMARY KEY AUTOINCREMENT

如:

CREATE TABLE 21andy (

id INTEGER PRIMARY KEY AUTOINCREMENT,

21andy VARCHAR(100) NOT NULL, date DATE

);

分页查询显示

类似MySQL数据库,是利用mySQL的LIMIT函数,LIMIT [offset,] rows从数据库表中M条记录开始检索N条记录的语句为:

SELECT * FROM 表名称 LIMIT M,N

例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:

select * from sys_option limit 10,20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值