Android学习笔记(43):Java开发SQLite程序
2016-04-25 01:17
369 查看
正如前面一文说的,SQLite多用于嵌入式开发中,但有时为了更方便的编辑数据库文件,我们也常常需要开发在电脑上运行的SQLite程序。这种情况是经常发生的,比如在我们需要把一大批的txt文件中的数据插入到一个数据库中的时候。
还好这是很简单的,所以本文我们来学习如何用Java开发SQLite程序。
(1)准备工作
下载sqlite-jdbc-版本号.jar文件,放到jre\lib\ext文件夹。如我的路径是C:\Program
Files\Java\jre1.8.0_77\lib\ext。
(2)一个测试代码,可以先运行感受下,具体内容下面再详细讲。
输出结果:
名字1 90
名字2 58
名字3 69
名字4 85
(3)连接数据库
我们需要连接到可用的JDBC驱动程序。之后我们需要建立到某个数据库的连接,如果这个数据库不存在,就会在指定位置创建数据库文件。并通过连接创建一个Statement实例。
//连接SQLite的JDBC
Class.forName("org.sqlite.JDBC");
//建立一个数据库名test.db的连接,如果不存在就在当前目录下创建之
Connection mConnection = DriverManager.getConnection("jdbc:sqlite:test.db3");
Statement state =
mConnection.createStatement();
(4)数据库的操作:
对于不需要取得返回数据的SQL语句,我们都调用Statement的executeUpdate(str)方法执行对应SQL语句。包括建表、插入、删除等等。对于需要得到返回数据的SQL查询语句,我们需要调用executeQuery(str)方法,返回结果为一个ResultSet
对象,就像它的名字一样,这是一个查询结果的集合,我们可以用它的next()方法等来操控集合的行指针,用getXxx(“列名”)方法获取某一行的某一列的值。
需要注意每个SQLite语句要以“;”结尾。
一种较特殊的情况就是插入语句中需要以传入参数的形式来写,这样会省下拼接字符串的诸多麻烦。这时候我们需要用到PreparedStatement类,使用的步骤如下所示:
<1> 定义插入数据的规范:
PreparedStatement prs =
mConnection.prepareStatement("insert into tb1 values (?,?);");
<2>传入参数:
第一个参数为列数,第二个参数为该列的值。
prs.setString(1,"名字5");
prs.setString(2,"83");
<3>执行语句:
调用下面的方法真正执行插入语句。
prs.addBatch();
mConnection.setAutoCommit(false);
prs.executeBatch();
mConnection.setAutoCommit(true);
我们修改上面的测试文件用传参的形式插入数据:
(5)关闭结果集、断开与数据库的连接
result.close();
mConnection.close();
还好这是很简单的,所以本文我们来学习如何用Java开发SQLite程序。
(1)准备工作
下载sqlite-jdbc-版本号.jar文件,放到jre\lib\ext文件夹。如我的路径是C:\Program
Files\Java\jre1.8.0_77\lib\ext。
(2)一个测试代码,可以先运行感受下,具体内容下面再详细讲。
import java.sql.*; public class SQLiteTest { public static void main(String[] args) { try { //连接SQLite的JDBC Class.forName("org.sqlite.JDBC"); //建立一个数据库名test.db的连接,如果不存在就在当前目录下创建之 Connection mConnection = DriverManager.getConnection("jdbc:sqlite:test.db3"); Statement state = mConnection.createStatement(); //创建表 state.executeUpdate( "create table tb1(name varchar(20), grade int);" ); //插入数据 state.executeUpdate( "insert into tb1 values('名字1',90);" ); state.executeUpdate( "insert into tb1 values('名字2',58);" ); state.executeUpdate( "insert into tb1 values('名字3',69);" ); state.executeUpdate( "insert into tb1 values('名字4',85);" ); //查询数据 ResultSet result = state.executeQuery("select * from tb1;"); //打印查询结果 while (result.next()) { System.out.print(result.getString("name") + " "); System.out.println(result.getString("grade")); } result.close(); mConnection.close(); //结束数据库的连接 } catch( Exception e ) { e.printStackTrace ( ); } } }
输出结果:
名字1 90
名字2 58
名字3 69
名字4 85
(3)连接数据库
我们需要连接到可用的JDBC驱动程序。之后我们需要建立到某个数据库的连接,如果这个数据库不存在,就会在指定位置创建数据库文件。并通过连接创建一个Statement实例。
//连接SQLite的JDBC
Class.forName("org.sqlite.JDBC");
//建立一个数据库名test.db的连接,如果不存在就在当前目录下创建之
Connection mConnection = DriverManager.getConnection("jdbc:sqlite:test.db3");
Statement state =
mConnection.createStatement();
(4)数据库的操作:
对于不需要取得返回数据的SQL语句,我们都调用Statement的executeUpdate(str)方法执行对应SQL语句。包括建表、插入、删除等等。对于需要得到返回数据的SQL查询语句,我们需要调用executeQuery(str)方法,返回结果为一个ResultSet
对象,就像它的名字一样,这是一个查询结果的集合,我们可以用它的next()方法等来操控集合的行指针,用getXxx(“列名”)方法获取某一行的某一列的值。
需要注意每个SQLite语句要以“;”结尾。
一种较特殊的情况就是插入语句中需要以传入参数的形式来写,这样会省下拼接字符串的诸多麻烦。这时候我们需要用到PreparedStatement类,使用的步骤如下所示:
<1> 定义插入数据的规范:
PreparedStatement prs =
mConnection.prepareStatement("insert into tb1 values (?,?);");
<2>传入参数:
第一个参数为列数,第二个参数为该列的值。
prs.setString(1,"名字5");
prs.setString(2,"83");
<3>执行语句:
调用下面的方法真正执行插入语句。
prs.addBatch();
mConnection.setAutoCommit(false);
prs.executeBatch();
mConnection.setAutoCommit(true);
我们修改上面的测试文件用传参的形式插入数据:
import java.sql.*; public class SQLiteTest { public static void main(String[] args) { try { //连接SQLite的JDBC Class.forName("org.sqlite.JDBC"); //建立一个数据库名test.db的连接,如果不存在就在当前目录下创建之 Connection mConnection = DriverManager.getConnection("jdbc:sqlite:test.db3"); Statement state = mConnection.createStatement(); //创建表 state.executeUpdate( "create table tb1(name varchar(20), grade int);" ); //插入数据 state.executeUpdate( "insert into tb1 values('名字1',90);" ); state.executeUpdate( "insert into tb1 values('名字2',58);" ); state.executeUpdate( "insert into tb1 values('名字3',69);" ); state.executeUpdate( "insert into tb1 values('名字4',85);" ); //以传参的形式插入数据 PreparedStatement prs = mConnection.prepareStatement("insert into tb1 values (?,?);"); prs.setString(1,"名字5"); prs.setString(2,"83"); prs.addBatch(); mConnection.setAutoCommit(false); prs.executeBatch(); mConnection.setAutoCommit(true); //查询数据 ResultSet result = state.executeQuery("select * from tb1;"); //打印查询结果 while (result.next()) { System.out.print(result.getString("name") + " "); System.out.println(result.getString("grade")); } result.close(); mConnection.close(); //结束数据库的连接 } catch( Exception e ) { e.printStackTrace ( ); } } }
(5)关闭结果集、断开与数据库的连接
result.close();
mConnection.close();
相关文章推荐
- Android中的RxJava,Retrofit,MVP的使用
- 活动——Intent在活动之间穿梭
- android studio学习---签名打包的两种方式
- android studio学习---Lint工具
- Android MQTT Demo
- android studio学习---模板
- android studio学习---实时布局(Live Layout)
- android studio学习---怎么创建一个新的module并且再次运行起来(在当前的project里面)
- Android 常用工具类之 DimenUtil
- android studio学习----添加项目依赖包补充---添加github上的开源项目为库
- 学习android前配置
- android笔记(1)
- 深圳Android培训拿高薪 开始我的高薪之旅
- Android开发中libs目录下so文件的正确放置“姿势”
- android studio学习----添加项目依赖包总结
- android studio学习----如何创建一个库项目
- Android之MediaPlayer简单应用
- Android真机访问PC端服务器
- android studio学习----添加项目库
- Android四大组件--ContentProvider详解