JAVA使用SQLite——sqlitejdbc
来源:互联网 发布:java子弹散射算法 编辑:程序博客网 时间:2024/06/10 17:11
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();
}
}
http://www.zentus.com/sqlitejdbc/
为了减少数据库连接的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();
http://blog.csdn.net/happyqyt/article/details/6742740
如:
CREATE TABLE 21andy (
id INTEGER PRIMARY KEY AUTOINCREMENT,
21andy VARCHAR(100) NOT NULL, date DATE
);
SELECT * FROM 表名称 LIMIT M,N
例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:
select * from sys_option limit 10,20
- JAVA使用SQLite——sqlitejdbc
- JAVA使用SQLite——sqlitejdbc
- SQLite数据库下载和SQLiteJDBC基本使用
- SQLite学习总结(2)——使用Java操作SQLite
- java中使用sqlite
- java连接使用sqlite
- Java使用Sqlite
- java 中使用 sqlite
- java sqlite使用小记
- Java 使用 SQLite数据库
- java: SQLite使用实例
- 【sqlite】——使用记录
- Android——SQLite使用
- SQLite——简单使用
- java中使用sqlite数据库
- JAVA中sqlite的使用
- java中使用sqlite数据库
- SQLite 在 Java中的使用
- 各种SQL查询技巧汇总 (转)
- 搭建Amazeui+react+webpack+webstorm开发环境
- 如何清除远程桌面访问痕迹,删除远程桌面缓存记
- 张量分解论文学习
- Windows7中右键菜单的"发送到"菜单损坏的修复办法
- JAVA使用SQLite——sqlitejdbc
- Django 视图和url配置
- JAVA中的反射机制
- UIWindow
- java基础学习面向对象之封装 五-2
- (36)Spring Boot Cache理论篇【从零开始学Spring Boot】
- 十个免费的 Web 压力测试工具
- DBLINK
- 自定义圆加载进度单点触控