import java.sql.*;
public class Test {
}
为了减少数据库连接的I/O开销,一般会把多条数据插入放在一条SQL语句中一次执行。
以前用Mysql做开发一直是这样用的:
INSERT INTO TABLE(col1, col2) VALUES(val11, val12),
最近用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;
如:
CREATE TABLE 21andy (
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
最后大家可以尝试使用内存数据库:
还可以试试内存数据库:
DriverManager.getConnection("jdbc:sqlite::memory:");
connection.prepareStatement(createTableSql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);