[原创]如何在java中使用sqlite(2)

如题所述

如何在java中使用sqlite: 上篇文章介绍了如何在Eclipse中配置javasqlite,以下简单介绍javasqlite如何实现数据库的操作: Javasqlite公开了几个类,包括:Authorizer、 BusyHandler、Callback、Constants、DatabaseException、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; }}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网