电脑爱好者之家

当前位置: 主页 > JAVA编程文档 >

JAVA使用SQLite(SQLITEJDBC)

时间:2016-10-14 16:44来源:未知 作者:机器AI 点击:
相关文档:JAVA中使用SQLITE如何安装下载的驱动JAR文件? import java.sql.*; public class Test { public static void main(String[] args) throws Exception { Class.forName(org.sqlite.JDBC); Connection conn = DriverManager.getConnection(jdbc:sqlit
相关文档:JAVA中使用SQLITE如何安装下载的驱动JAR文件?

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 FROM sqlite_master where type='table' and name='DBInfo' //其中DBInfo为需要判断的表名。注意大小写敏感!


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语句:
view plain



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

php语句:
view plain



  • $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
(责任编辑:机器AI)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片