使用SQL语句操作SQLite数据库
2013-07-24 11:37
323 查看
先上一张效果图:
每次点击“插入”,都会在下面的ListView中新增一行
本文涉及四个文件,分别是DBTest.java、main.xml、line.xml、strings.ml
其中db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString() + "/my.db3",null);用于创建或打开SQLite数据库。当点击按钮的时候,程序会调用insertData方法,向底层数据库表中插入一行记录。然后再执行查询语句,把底层数据表中的记录查询出来,并使用ListView将查询结果(Cursor)显示出来。
以上代码用于将Cursor封装成SimpleCursorAdapter,这个SimpleCursorAdapter实现了Adapter接口,可以作为ListView的内容适配器。Cursor里的每一行可以当成Map处理(以数据列的列名为key,数据列的值为value)。SimpleCursorAdapter这里有5个参数DBTest.this就是当前文件,R.layout.line是line.xml布局文件,cursor是执行完SQl语句之后,获取的游标,第4个参数是from,第5个参数是to,可以理解为将数据库里的news_title、news_content的字段值赋给line.xml里面的my_title、my_content。
main.xml
line.xml
strings.xml中加入下面一行 ,一般按钮、TextView的文字都写在这个文件中,这样方便维护。比如说需要修改某些字,或者提供不同的语言版本的时候,可以直接在里面改。当然有些语言开发者不熟悉的时候,可以直接把整个文件给有能力翻译的人,这样非常方便。
总结使用SQLiteDatabase进行数据库操作的步骤:
1.获取SQLiteDatabase对象,它代表了与数据库的连接
2.调用SQLiteDatabase的方法来执行SQL语句
3.操作SQL语句的执行效果,比如用SimpleCursorAdapter封装Cursor
4.关闭SQLiteDatabase,回收资源
每次点击“插入”,都会在下面的ListView中新增一行
本文涉及四个文件,分别是DBTest.java、main.xml、line.xml、strings.ml
01 | public class DBTest extends Activity { |
02 |
03 | SQLiteDatabase db; |
04 | Button btn = null ; |
05 | ListView listView; |
06 | @Override |
07 | protected void onCreate(Bundle savedInstanceState) { |
08 | super .onCreate(savedInstanceState); |
09 | setContentView(R.layout.main); |
10 | //获取路径,也算是一种调试的方法吧 |
11 | Log.d( "myLog" , this .getFilesDir().toString()); |
12 | //创建或打开数据库(此处需要使用据对路径) |
13 | db = SQLiteDatabase.openOrCreateDatabase( this .getFilesDir() |
14 | .toString() + "/my.db3" , null ); |
15 | listView = (ListView) findViewById(R.id.show); |
16 | btn = (Button) findViewById(R.id.ok); |
17 | btn.setOnClickListener( new OnClickListener() { |
18 |
19 | @Override |
20 | public void onClick(View source) { |
21 | //获取用户输入 |
22 | String title = ((EditText)findViewById(R.id.title)) |
23 | .getText().toString(); |
24 | String content = ((EditText)findViewById(R.id.content)) |
25 | .getText().toString(); |
26 | //如果没有数据库表就执行catch语句,先创建表,再执行其他语句 |
27 | try { |
28 | insertData(db, |
29 | Cursor cursor = db.rawQuery( "select * from news_inf" , null ); |
30 | inflateList(cursor); |
31 | } catch (SQLiteException se){ |
32 | //执行DDL创建数据表 |
33 | db.execSQL( "create table news_inf(_id integer primary key autoincrement," |
34 | + " news_title varchar(50)," |
35 | + " news_content varchar(255))" ); |
36 | //执行insert语句插入数据 |
37 | insertData(db, |
38 | //执行查询 |
39 | Cursor cursor = db.rawQuery( "select * from news_inf" , null ); |
40 | inflateList(cursor); |
41 | } |
42 | } |
43 | }); |
44 | } |
45 |
46 |
47 | private void insertData(SQLiteDatabase db |
48 | , |
49 | //执行插入语句 |
50 | db.execSQL( "insert |
51 | , new String[]{title |
52 | } |
53 |
54 | private void inflateList(Cursor cursor){ |
55 | //填充SimpleCursorAdapter |
56 | SimpleCursorAdapter adapter = new SimpleCursorAdapter( |
57 | DBTest. this , |
58 | , new String[]{ "news_title" , "news_content" } |
59 | , new int []{R.id.my_title, R.id.my_content}); |
60 | //显示数据 |
61 | listView.setAdapter(adapter); |
62 | } |
63 |
64 | @Override |
65 | protected void onDestroy() { |
66 | super .onDestroy(); |
67 | //退出程序时关闭SQLiteDatabase |
68 | if (db != null && db.isOpen()){ |
69 | db.close(); |
70 | } |
71 | } |
72 |
73 |
74 |
75 | } |
1 | SimpleCursorAdapter adapter = new SimpleCursorAdapter( |
2 | DBTest. this , |
3 | , new String[]{ "news_title" , "news_content" } |
4 | , new int []{R.id.my_title, R.id.my_content}); |
main.xml
01 | < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" |
02 | xmlns:tools = "http://schemas.android.com/tools" |
03 | android:orientation = "vertical" |
04 | android:layout_width = "fill_parent" |
05 | android:layout_height = "fill_parent" |
06 | tools:context = ".DBTest" > |
07 |
08 | < EditText |
09 | android:id = "@+id/title" |
10 | android:layout_width = "fill_parent" |
11 | android:layout_height = "wrap_content" |
12 | /> |
13 | < EditText |
14 | android:id = "@+id/content" |
15 | android:layout_width = "fill_parent" |
16 | android:layout_height = "wrap_content" |
17 | android:lines = "2" /> |
18 | < Button |
19 | android:id = "@+id/ok" |
20 | android:layout_width = "wrap_content" |
21 | android:layout_height = "wrap_content" |
22 | android:text = "@string/insert" |
23 | /> |
24 | < ListView |
25 | android:id = "@+id/show" |
26 | android:layout_width = "fill_parent" |
27 | android:layout_height = "fill_parent" |
28 | /> |
29 | </ LinearLayout > |
01 | <? xml version = "1.0" encoding = "utf-8" ?> |
02 | < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" |
03 | android:orientation = "horizontal" |
04 | android:layout_width = "fill_parent" |
05 | android:layout_height = "fill_parent" |
06 | > |
07 | < EditText |
08 | android:id = "@+id/my_title" |
09 | android:layout_width = "wrap_content" |
10 | android:layout_height = "wrap_content" |
11 | android:width = "120px" |
12 | /> |
13 | < EditText |
14 | android:id = "@+id/my_content" |
15 | android:layout_width = "fill_parent" |
16 | android:layout_height = "wrap_content" |
17 | /> |
18 | </ LinearLayout > |
1 | < string name = "insert" >插入</ string > |
1.获取SQLiteDatabase对象,它代表了与数据库的连接
2.调用SQLiteDatabase的方法来执行SQL语句
3.操作SQL语句的执行效果,比如用SimpleCursorAdapter封装Cursor
4.关闭SQLiteDatabase,回收资源
相关文章推荐
- Android SQLite数据库之一,使用sql语句操作SQLite数据库
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
- 使用SQL语句操作SQLite数据库
- SQLite数据库操作--使用SQL语句增删查改
- 使用事务操作SQLite数据库和一些常用的SQL语句
- 使用Phoenix通过sql语句更新操作hbase数据
- 使用sql语句建立与删除链接服务器及执行数据库操作
- 【玩转SQLite系列】(三)通过sql语句操作SQLite数据库
- Android SQLite数据库的使用及常用的增删改查方法、无sql语句的方法
- asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析
- C#中使用SQL的BULK语句,进行大数据量操作
- Mysql 将结果保存到文件 从文件里运行sql语句 记录操作过程(tee 命令的使用)
- 使用sql语句建立与删除链接服务器及执行数据库操作
- asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析
- entityframework学习笔记--009-使用原生sql语句操作数据
- 使用Phoenix通过sql语句更新操作hbase数据
- golang 使用sql语句操作数据库的方法
- 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)
- 使用T-SQL语句操作数据表-插入数据