sqlite資料庫java
javasqlite如何實現資料庫的操作:
     Javasqlite公開了幾個類,包括:Authorizer、  BusyHandler 、Callback、 Constants 、Database Exception 、Function 、FunctionContext、ProgressHandler、StringEncoder 、TableResult 、Trace 、Vm 關於這幾個類可以參考作者網站上的文檔。
  以下通過對一個數據表的操作,介紹如何用這幾個類進行資料庫操作:
資料庫操作類:HelloSqlite2.java:
初始化一個Database對象:Database db = new Database();Database類是主要功能類,通過db對象可以實現對資料庫的操作:
 
1、 連接資料庫:
public int connectDB(String dbPath)
{
    try{
        db.open(dbPath,0666);//調用open方法連接資料庫,如果不存在創建這個資料庫文件
        return 1;
    }
   catch(java.lang.Exception ex)
   {
       ex.printStackTrace();
       return -1;
   }
}
 
2、創建數據表
        //創建資料庫字元串
        static final String strCreate = "create table [User] ([UserID] integer primary key,[UserName] text,"+
                                      "[Password] text,[BeDeleted] integer);";
public int createTable()
{
    try
    {
        db.exec(strCreate,null);//執行一個sql命令,由於不需要處理返回值,
                                //所以callback可以直接為null
        return 1;
    }
    catch(java.lang.Exception ex)
    {
        ex.printStackTrace();
        return -1;
    }
}
 
3、修改數據表
3.1、增加記錄
static final String strInsert1 = "INSERT INTO [USER] ([username],[password],[bedeleted])VALUES('sacramento','123456','1');";
 
    public int insert()
{
    try
    {
        db.exec(strInsert1,null);//執行一個sql命令,由於不需要處理返回值,
                                //所以callback可以直接為null
        return 1;
    }
    catch(java.lang.Exception ex)
    {
        ex.printStackTrace();
        return -1;
    }
}
3.2、修改記錄
static final String strUpdate = "update [user] set [username] = 'Boston' where [userid] = 1;";
 
public int update()
{
    try
    {
        db.exec(strUpdate,null);//執行一個sql命令,由於不需要處理返回值,
                                //所以callback可以直接為null
        return 1;
    }
    catch(java.lang.Exception ex)
    {
        ex.printStackTrace();
        return -1;
    }
}
 
3.3、刪除記錄
static final String strDelete = "delete from [user] where [userid] = 2;";
 
public int delete()
{
    try
    {
        db.exec(strDelete,null);//執行一個sql命令,由於不需要處理返回值,
                                //所以callback可以直接為null
        return 1;
    }
    catch(java.lang.Exception ex)
    {
        ex.printStackTrace();
        return -1;
    }
}
 
4、查詢數據表
以下函數簡單的輸出查詢結果:
static final String strDisplay = "select * from [user];";
public int displayTable()
{
    try
    {
        System.out.println(db.get_table(strDisplay));
        return 1;
    }
    catch(java.lang.Exception ex)
    {
        ex.printStackTrace();
        return -1;
    }
}
 
5、處理查詢結果
簡單的輸出結果可能並不能滿足大部分查詢的需要,那如何能夠在查詢過程中處理查詢結果呢?可以使用db的exec(String arg0,Callback arg1)方法,具體做法如下:
寫一個class TableFmt 實現了SQLite. Callback介面,接著將這個類的一個對象傳遞給exec的Callback參數。這樣exec就會對每個查詢結果調用Callback。繼而實現對結果的處理:
介面的實現,實現Callback規定的三個介面函數:
class TableFmt implements Callback{
    public void columns(String[] cols) {
        System.out.println("columns");
        for (int i = 0; i < cols.length; i++) {
          System.out.println(cols[i]);
        }
      }
      public boolean newrow(String[] cols) {
        System.out.println("newrow");
        for (int i = 0; i < cols.length; i++) {
          System.out.println(cols[i]);
        }
        return false;
      }
      public void types(String[] cols)
      {
          System.out.println("types");
          for (int i = 0; i < cols.length; i++) {
            System.out.println(cols[i]);
          }
      }
}
把TableFmt的一個實例傳給exec()函數,這樣便可以實現對結果集的處理。
public int dealTable()
{
    try
    {
        db.exec(strDisplay,new TableFmt());
        return 1;
    }
    catch(java.lang.Exception ex)
    {
        ex.printStackTrace();
        return -1;
    }
}
  你可能覺得沒一個功能寫一個函數太麻煩了,是的。可以做一個通用的函數,把sql語句當作參數傳遞給函數。
比如實現一個這樣的函數:
int executenonquery(String sql);對於不需要返回值的sql語句,比如增加、刪除、修改、都可以通過這個函數來實現,只需要傳入不同參數就可以,函數代碼如下:
public int executenonquery(String sql)
{
    try
    {
        db.exec(sql,null);//執行一個sql命令,由於不需要處理返回值,
                                //所以callback可以直接為null
        return 1;
    }
    catch(java.lang.Exception ex)
    {
        ex.printStackTrace();
        return -1;
    }
}
⑵ 如何用Java讀寫SQLite資料庫文件,在Windows環境
首先需要這個包,添加到工程。
下面給你示例代碼
importjava.sql.*;
publicclassSQLiteDemo{
publicstaticvoidmain(String[]args){
try{
//連接SQLite的JDBC
Class.forName("org.sqlite.JDBC");
//建立一個資料庫名data.db的連接,如果不存在就在當前目錄下創建之
Connectionconn=DriverManager.getConnection("jdbc:sqlite:data.db");
conn.setAutoCommit(false);
Statementstat=conn.createStatement();
stat.executeUpdate("createtableifnotexiststbl1(namevarchar(20),salaryint);");//創建一個表,兩列
stat.executeUpdate("insertintotbl1values('ZhangSan',8000);");//插入數據
stat.executeUpdate("insertintotbl1values('LiSi',7800);");
stat.executeUpdate("insertintotbl1values('WangWu',5800);");
stat.executeUpdate("insertintotbl1values('ZhaoLiu',9100);");
ResultSetrs=stat.executeQuery("select*fromtbl1;");//查詢數據
while(rs.next()){//將查詢到的數據列印出來
System.out.print("name="+rs.getString("name")+"");//列屬性一
System.out.println("salary="+rs.getString("salary"));//列屬性二
}
rs.close();
conn.commit();
conn.close();//結束資料庫的連接
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}
⑶ java連接sqlite的問題
首先你要打開的資料庫文件是D:/Eclipse work space/student.db,不是相對路徑,所以你的程序應該在D:/Eclipse work space/目錄下運行。但最好使用相對路徑「jdbc:sqlite:student.db"
另外你的sql語句有問題,字元串數據要用''包起來,也就是
Stringr1="Insertintostudentvalues('xingming','','shengri','','di','','','techang')"
⑷ 怎樣在普通java項目中嵌入sqlite資料庫
只要導入jar包就行了,使用的時候載入class(即Class.forName("org.sqlite.JDBC");)
然後可以用最原始的jdbc代碼去使用sqlite
比如創建連接:Connectionconn=DriverManager.getConnection("jdbc:sqlite:test.db");(其中test.db就是資料庫文件以及資料庫的名稱,這句話有兩個作用:1、如果不存在該資料庫則創建並返回連接;2、如果存在了資料庫,則直接返回連接)
代碼如下:
importjava.sql.*;
publicclassSQLiteJDBC
{
publicstaticvoidmain(Stringargs[])
{
Connectionc=null;
try{
//Class.forName載入class
Class.forName("org.sqlite.JDBC");
c=DriverManager.getConnection("jdbc:sqlite:test.db");
}catch(Exceptione){
System.err.println(e.getClass().getName()+":"+e.getMessage());
System.exit(0);
}
System.out.println("Openeddatabasesuccessfully");
}
}
創建表
importjava.sql.*;
publicclassSQLiteJDBC
{
publicstaticvoidmain(Stringargs[])
{
Connectionc=null;
Statementstmt=null;
try{
//Class.forName載入class
Class.forName("org.sqlite.JDBC");
//DriverManager.getConnection創建連接
c=DriverManager.getConnection("jdbc:sqlite:test.db");
System.out.println("Openeddatabasesuccessfully");
stmt=c.createStatement();
//sql創建表語句
Stringsql="CREATETABLECOMPANY"+
"(IDINTPRIMARYKEYNOTNULL,"+
"NAMETEXTNOTNULL,"+
"AGEINTNOTNULL,"+
"ADDRESSCHAR(50),"+
"SALARYREAL)";
//executeUpdate創建表
stmt.executeUpdate(sql);
stmt.close();
c.close();
}catch(Exceptione){
System.err.println(e.getClass().getName()+":"+e.getMessage());
System.exit(0);
}
System.out.println("Tablecreatedsuccessfully");
}
}
⑸ java 訪問 sqlite 資料庫。.
下載sqlite-jdbc-3.21.0.jar,
代碼如下:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassApp{
publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{
Class.forName("org.sqlite.JDBC");
Connectionconn=DriverManager.getConnection("jdbc:sqlite://e://python/sqlite/test.db");
Statementstmt=conn.createStatement();
ResultSetrs=stmt.executeQuery("select*fromtb_visited");
while(rs.next()){
System.out.println(rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
}
}
⑹ java 調用 sqlite 資料庫
只要導入jar包就行了,使用的時候 載入class(即Class.forName("org.sqlite.JDBC");)然後可以用最原始的jdbc代碼去使用sqlite比如創建連接:Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db" );(其中test.db就是資料庫文件以及資料庫的名稱,這句話有兩個作用:1、如果不存在該資料庫則創建並返回連接;2、如果存在了資料庫,則直接返回連接)代碼如下:
  
import java.sql.*; public class SQLiteJDBC{  public static void main( String args[] )  {    Connection c = null;    try {    //Class.forName載入class      Class.forName("org.sqlite.JDBC");      c = DriverManager.getConnection("jdbc:sqlite:test.db");    } catch ( Exception e ) {      System.err.println( e.getClass().getName() + ": " + e.getMessage() );      System.exit(0);    }    System.out.println("Opened database successfully");  }} 創建表import java.sql.*; public class SQLiteJDBC{  public static void main( String args[] )  {    Connection c = null;    Statement stmt = null;    try {    //Class.forName載入class      Class.forName("org.sqlite.JDBC");      //DriverManager.getConnection創建連接      c = DriverManager.getConnection("jdbc:sqlite:test.db");      System.out.println("Opened database successfully");      stmt = c.createStatement();      //sql創建表語句      String sql = "CREATE TABLE COMPANY " +                   "(ID INT PRIMARY KEY     NOT NULL," +                   " NAME           TEXT    NOT NULL, " +                    " AGE            INT     NOT NULL, " +                    " ADDRESS        CHAR(50), " +                    " SALARY         REAL)";       //executeUpdate創建表      stmt.executeUpdate(sql);      stmt.close();      c.close();    } catch ( Exception e ) {      System.err.println( e.getClass().getName() + ": " + e.getMessage() );      System.exit(0);    }    System.out.println("Table created successfully");  }}
⑺ java怎樣鏈接sqlite資料庫
用jdbc連接就好
跟連接其他的數據一樣,加入對應的驅動,操作的方式都一樣的
找驅動,可以在網路上面搜索關鍵字:sqlite jdbc 驅動
⑻ 如何在java中使用sqlite
1、SQLite是什麼
    
SQLite,是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資
源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語
言相結合,比如 
Tcl、C#、PHP、Java等,還有ODBC介面,同樣比起Mysql、PostgreSQL這兩款開源世界著名的資料庫管理系統來講,它的處理速度
比他們都快。SQLite第一個Alpha版本誕生於2000年5月。 至今已經有13個年頭,SQLite也迎來了一個版本 SQLite 
3已經發布。
    
SQLite支持事務處理功能等等。也可以把理解成Microsoft的Access,有時候真的覺得有點象,但是事實上它們區別很大。比如SQLite
 
支持跨平台,操作簡單,能夠使用很多語言直接創建資料庫,而不象Access一樣需要Office的支持。如果你是個很小型的應用,或者你想做嵌入式開
發,沒有合適的資料庫系統,那麼你可以考慮使用SQLite。到2013年10月17日最新版本是 3.8.1 。它的官方網站是:http://www.sqlite.org或者http://www.sqlite.com.cn,能在上面獲得源代碼和文檔。
2、SQLite客戶端管理軟體
    SQLite亦可以作為桌面資料庫使用,以下為第三方SQLite的GUI軟體。
    SQLiteMan,使用QT開發的一個SQLite客戶端,支持多語言、跨平台。SQLiteMan
    SQLite Manager, 以 火狐瀏覽器的擴展形式提供的SQLite客戶端。
    SQLite Database Browser, a graphical client to access SQLite databases
    SqlPro SQL Client, another graphical client to work with SQLite databases。
3、Java中如何使用SQLite
    java連接SQLite 代碼如下: 
importjava.sql. * ;
importorg.sqlite.JDBC;
/** 
    * 這是個非常簡單的SQLite的Java程序, 
    * 程序中創建資料庫、創建表、然後插入數據, 
    * 最後讀出數據顯示出來 
    */
publicclass TestSQLite {
    publicstaticvoid main(String[] args) {
        try {
            //連接SQLite的JDBC  
            Class.forName("org.sqlite.JDBC");
            //建立一個資料庫名zieckey.db的連接,如果不存在就在當前目錄下創建之  
            Connection conn = DriverManager.getConnection("jdbc:sqlite:zieckey.db");
            Statement stat = conn.createStatement();
            stat.executeUpdate("create table tbl1(name varchar(20), salary int);"); //創建一個表,兩列  
            stat.executeUpdate("insert into tbl1values('ZhangSan',8000);"); //插入數據  
            stat.executeUpdate("insert into tbl1values('LiSi',7800);");
            stat.executeUpdate("insert into tbl1values('WangWu',5800);");
            stat.executeUpdate("insert into tbl1values('ZhaoLiu',9100);");
            ResultSet rs = stat.executeQuery("select * from tbl1;"); //查詢數據  
            while (rs.next()) { //將查詢到的數據列印出來  
                System.out.print("name = " + rs.getString("name") + " "); //列屬性一  
                System.out.println("salary = " + rs.getString("salary")); //列屬性二  
            }
            rs.close();
            conn.close(); //結束資料庫的連接  
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
4、Hibernate如何使用SQLite
    sqlite可以支持2t的數據:2t=1024*2G,一般Hibernate會很少使用SQLite,因為Hibernate一做出的程序都是比較大的項目,不什麼使用SQLite。
    Hibernate暫時不支持SQlite資料庫表的逆向工程。如果有興趣可以自己動手編寫,否則推薦使用hibernate 
annotation。連接hibernate,需要Dialect來支持,用來映射java類型和資料庫支持的類型。所以需要編寫Dialect。
⑼ 如何在Java中訪問SQLite資料庫
在Eclipse中新建一個工程,並在Properties》Java build path》Libraries中將這個驅動包導入工程中。
在代碼中導入
import Java.sql.*;
import org.sqlite.JDBC;
然後在main函數中加入下列代碼,編譯運行。
try{
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:filename");  //filename為sqlite資料庫文件名,最好帶上絕對路徑
String sql = "insert into tb_users values('張三','111','男','25')";
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
conn.close();
}catch(Exception e){
e.printStackTrace();
}
然後可以用SQLiteSpy工具打開資料庫文件,就可以看到上面插入的記錄了
