zoukankan      html  css  js  c++  java
  • JAVA使用SQLite——sqlitejdbc

    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/

    sqlite判断数据表存在用到的Sql语句
    SELECT COUNT(*)  as CNT FROM sqlite_master where 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语句:

    1. begin;  
    2. INSERT INTO "table" VALUES ('a', 'b', 'c');  
    3. INSERT INTO "table" VALUES ('a', 'b', 'c');  
    4. INSERT INTO "table" VALUES ('a', 'b', 'c');  
    5. commit;  

    php语句:

    1. $i = 0;  
    2. $db->beginTransaction();    
    3. while ($i<10){    
    4.     $sql = "INSERT INTO 'table' VALUES ('a', 'b', 'c')";    
    5.     $db->exec($sql);  
    6.     $i++;  
    7. }    
    8. $db->commit();   

    http://blog.csdn.net/happyqyt/article/details/6742740

     
     
    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

     
  • 相关阅读:
    IE不支持 ES6 Promise 对象的解决方案
    微信小程序使用阿里图标
    IE浏览器 ajax传参数值为中文时出现乱码的解决方案
    一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
    常见的一些浏览器兼容问题
    移动端rem设置(部分安卓机型不兼容)
    element ui el-menu样式调整
    原生login页面
    elemet ui去除table 样式
    项目上线
  • 原文地址:https://www.cnblogs.com/wuhenke/p/2229126.html
Copyright © 2011-2022 走看看