一、什么是SQLite
SQLite是一款开源的、轻量级的、嵌入式的、关系型数据库。它在2000年由D. Richard Hipp发布,可以支援Java、Net、PHP、Ruby、Python、Perl、C等几乎所有的现代编程语言,支持Windows、Linux、Unix、Mac OS、Android、IOS等几乎所有的主流操作系统平台。
SQLite被广泛应用的在苹果、Adobe、Google的各项产品。如果非要举一个你身边应用SQLite的例子的话,如果你的机器中装的有迅雷,请打开迅雷安装目录,搜索一下sqlite3.dll,是不是找到了它的身影? 如果你装的有金山词霸,那么打开他的安装目录也会看到sqlite.dll的存在。是的,SQLite早就广泛的应用在我们接触的各种产品中了,当然我们今天学习它,是因为在Android开发中,Android推荐的数据库,也是内置了完整支持的数据库就是SQlite。
SQLite的特性:
1. ACID事务
2. 零配置 – 无需安装和管理配置
3. 储存在单一磁盘文件中的一个完整的数据库
4. 数据库文件可以在不同字节顺序的机器间自由的共享
5. 支持数据库大小至2TB
6. 足够小, 大致3万行C代码, 250K
7. 比一些流行的数据库在大部分普通数据库操作要快
8. 简单, 轻松的API
9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定
10. 良好注释的源代码, 并且有着90%以上的测试覆盖率
11. 独立: 没有额外依赖
12. Source完全的Open, 你可以用于任何用途, 包括出售它
13. 支持多种开发语言,C, PHP, Perl, Java, ASP.NET,Python
推荐的SQLite客户端管理工具,火狐插件 Sqlite Manger
二、Android中使用SQLite
我们还是通过一个例子来学习,相关讲解都写在代码注释里。
1、新建一个项目Lesson15_HelloSqlite,Activity起名叫MainHelloSqlite.java
2、编写用户界面 res/layout/main.xml,准备增(insert)删(delete)改(update)查(select)四个按钮,准备一个下拉列表spinner,显示表中的数据。
01 <?xml version="1.0" encoding="utf-8"?>
02 <linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent"android:orientation="vertical"xmlns:android="http://schemas.android.com/apk/res/android">
03
04 <textview android:layout_height="wrap_content"android:layout_width="wrap_content" android:textsize="20sp"android:layout_margintop="5dp" android:id="@+id/TextView01" android:text="SQLite基本操作">
05 </textview>
06
07 <button android:layout_height="wrap_content" android:layout_width="wrap_content"android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button01"android:text="增 | insert" android:minwidth="200dp"></button>
08
09 <button android:layout_height="wrap_content" android:layout_width="wrap_content"android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button02"android:text="删 | delete" android:minwidth="200dp"></button>
10
11 <button android:layout_height="wrap_content" android:layout_width="wrap_content"android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button03"android:text="改 | update" android:minwidth="200dp"></button>
12
13 <button android:layout_height="wrap_content" android:layout_width="wrap_content"android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button04"android:text="查 | select" android:minwidth="200dp"></button>
14
15 <spinner android:layout_height="wrap_content"android:layout_width="wrap_content" android:layout_margintop="5dp"android:id="@+id/Spinner01" android:minwidth="200dp">
16 </spinner>
17
18 <textview android:layout_height="wrap_content"android:layout_width="wrap_content" android:textsize="20sp"android:layout_margintop="5dp" android:id="@+id/TextView02"></textview>
19 </linearlayout>
3、在MainHeloSqlite.java的同目录中新建一个数据库操作辅助类 DbHelper.java,内容如下:
01 package android.basic.lesson15;
02
03 import android.content.Context;
04 import android.database.sqlite.SQLiteDatabase;
05 import android.database.sqlite.SQLiteDatabase.CursorFactory;
06 import android.database.sqlite.SQLiteOpenHelper;
07
08 public class DbHelper extends SQLiteOpenHelper {
09
10 public DbHelper(Context context, String name, CursorFactory factory,
11 int version) {
12 super(context, name, factory, version);
13 }
14
15 //辅助类建立时运行该方法
16 @Override
17 public void onCreate(SQLiteDatabase db) {
18
19 String sql = "CREATE TABLE pic (_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , fileName VARCHAR, description VARCHAR)";
20 db.execSQL(sql);
21 }
22
23 @Override
24 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
25 }
26
27 }
4、MainHelloSqlite.java的内容如下:
001 package android.basic.lesson15;
002
003 import android.app.Activity;
004 import android.content.ContentValues;
005 import android.database.Cursor;
006 import android.database.sqlite.SQLiteDatabase;
007 import android.os.Bundle;
008 import android.view.View;
009 import android.view.View.OnClickListener;
010 import android.widget.AdapterView;
011 import android.widget.AdapterView.OnItemSelectedListener;
012 import android.widget.Button;
013 import android.widget.SimpleCursorAdapter;
014 import android.widget.Spinner;
015 import android.widget.TextView;
016 import android.widget.Toast;
017
018 public class MainHelloSqlite extends Activity {
019
020 //SQLiteDatabase对象
021 SQLiteDatabase db;
022 //数据库名
023 public String db_name = "gallery.sqlite";
024 //表名
025 public String table_name = "pic";
026
027 //辅助类名
028 final DbHelper helper = new DbHelper(this, db_name, null, 1);
029
030 /** Called when the activity is first created. */
031 @Override
032 public void onCreate(Bundle savedInstanceState) {
033 super.onCreate(savedInstanceState);
034 setContentView(R.layout.main);
035
036 //UI组件
037 Button b1 = (Button) findViewById(R.id.Button01);
038 Button b2 = (Button) findViewById(R.id.Button02);
039 Button b3 = (Button) findViewById(R.id.Button03);
040 Button b4 = (Button) findViewById(R.id.Button04);
041
042 //从辅助类获得数据库对象
043 db = helper.getWritableDatabase();
044
045 //初始化数据
046 initDatabase(db);
047 //更新下拉列表中的数据
048 updateSpinner();
049
050 //定义按钮点击监听器
051 OnClickListener ocl = new OnClickListener() {
052
053 @Override
054 public void onClick(View v) {
055
056 //ContentValues对象
057 ContentValues cv = new ContentValues();
058 switch (v.getId()) {
059
060 //添加按钮
061 case R.id.Button01:
062
063 cv.put("fileName", "pic5.jpg");
064 cv.put("description", "图片5");
065 //添加方法
066 long long1 = db.insert("pic", "", cv);
067 //添加成功后返回行号,失败后返回-1
068 if (long1 == -1) {
069 Toast.makeText(MainHelloSqlite.this,
070 "ID是" + long1 + "的图片添加失败!", Toast.LENGTH_SHORT)
071 .show();
072 } else {
073 Toast.makeText(MainHelloSqlite.this,
074 "ID是" + long1 + "的图片添加成功!", Toast.LENGTH_SHORT)
075 .show();
076 }
077 //更新下拉列表
078 updateSpinner();
079 break;
080
081 //删除描述是'图片5'的数据行
082 case R.id.Button02:
083 //删除方法
084 long long2 = db.delete("pic", "description='图片5'", null);
085 //删除失败返回0,成功则返回删除的条数
086 Toast.makeText(MainHelloSqlite.this, "删除了" + long2 + "条记录",
087 Toast.LENGTH_SHORT).show();
088 //更新下拉列表
089 updateSpinner();
090 break;
091
092 //更新文件名是'pic5.jpg'的数据行
093 case R.id.Button03:
094
095 cv.put("fileName", "pic0.jpg");
096 cv.put("description", "图片0");
097 //更新方法
098 int long3 = db.update("pic", cv, "fileName='pic5.jpg'", null);
099 //删除失败返回0,成功则返回删除的条数
100 Toast.makeText(MainHelloSqlite.this, "更新了" + long3 + "条记录",
101 Toast.LENGTH_SHORT).show();
102 //更新下拉列表
103 updateSpinner();
104 break;
105
106 //查询当前所有数据
107 case R.id.Button04:
108 Cursor c = db.query("pic", null, null, null, null,
109 null, null);
110 //cursor.getCount()是记录条数
111 Toast.makeText(MainHelloSqlite.this,
112 "当前共有" + c.getCount() + "条记录,下面一一显示:",
113 Toast.LENGTH_SHORT).show();
114 //循环显示
115 for(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
116 Toast.makeText(MainHelloSqlite.this,
117 "第"+ c.getInt(0) +"条数据,文件名是" + c.getString(1) + ",描述是"+c.getString(2),
118 Toast.LENGTH_SHORT).show();
119 }
120 //更新下拉列表
121 updateSpinner();
122 break;
123 }
124 }
125 };
126
127 //给按钮绑定监听器
128 b1.setOnClickListener(ocl);
129 b2.setOnClickListener(ocl);
130 b3.setOnClickListener(ocl);
131 b4.setOnClickListener(ocl);
132
133 }
134
135 //初始化表
136 public void initDatabase(SQLiteDatabase db) {
137 ContentValues cv = new ContentValues();
138
139 cv.put("fileName", "pic1.jpg");
140 cv.put("description", "图片1");
141 db.insert(table_name, "", cv);
142
143 cv.put("fileName", "pic2.jpg");
144 cv.put("description", "图片2");
145 db.insert(table_name, "", cv);
146
147 cv.put("fileName", "pic3.jpg");
148 cv.put("description", "图片3");
149 db.insert(table_name, "", cv);
150
151 cv.put("fileName", "pic4.jpg");
152 cv.put("description", "图片4");
153 db.insert(table_name, "", cv);
154
155 }
156
157 //更新下拉列表
158 public void updateSpinner() {
159
160 //定义UI组件
161 final TextView tv = (TextView) findViewById(R.id.TextView02);
162 Spinner s = (Spinner) findViewById(R.id.Spinner01);
163
164 //从数据库中获取数据放入游标Cursor对象
165 final Cursor cursor = db.query("pic", null, null, null, null, null,
166 null);
167
168 //创建简单游标匹配器
169 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
170 android.R.layout.simple_spinner_item, cursor, new String[] {
171 "fileName", "description" }, new int[] {
172 android.R.id.text1, android.R.id.text2 });
173 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
174
175 //给下拉列表设置匹配器
176 s.setAdapter(adapter);
177
178 //定义子元素选择监听器
179 OnItemSelectedListener oisl = new OnItemSelectedListener() {
180
181 @Override
182 public void onItemSelected(AdapterView<?> parent, View view,
183 int position, long id) {
184 cursor.moveToPosition(position);
185 tv.setText("当前pic的描述为:" + cursor.getString(2));
186 }
187
188 @Override
189 public void onNothingSelected(AdapterView<?> parent) {
190 }
191 };
192
193 //给下拉列表绑定子元素选择监听器
194 s.setOnItemSelectedListener(oisl);
195 }
196
197 //窗口销毁时删除表中数据
198 @Override
199 public void onDestroy() {
200 super.onDestroy();
201 db.delete(table_name, null, null);
202 updateSpinner();
203 }
204 }
5、运行程序,查看结果:
本例使用的是SQLiteDatabase已经封装好的insert,delete,update,query方法,感兴趣的同学可以用SQLiteDatabase的execSQL()方法和rawQuery()方法来实现。
SQLite是一款开源的、轻量级的、嵌入式的、关系型数据库。它在2000年由D. Richard Hipp发布,可以支援Java、Net、PHP、Ruby、Python、Perl、C等几乎所有的现代编程语言,支持Windows、Linux、Unix、Mac OS、Android、IOS等几乎所有的主流操作系统平台。
SQLite被广泛应用的在苹果、Adobe、Google的各项产品。如果非要举一个你身边应用SQLite的例子的话,如果你的机器中装的有迅雷,请打开迅雷安装目录,搜索一下sqlite3.dll,是不是找到了它的身影? 如果你装的有金山词霸,那么打开他的安装目录也会看到sqlite.dll的存在。是的,SQLite早就广泛的应用在我们接触的各种产品中了,当然我们今天学习它,是因为在Android开发中,Android推荐的数据库,也是内置了完整支持的数据库就是SQlite。
SQLite的特性:
1. ACID事务
2. 零配置 – 无需安装和管理配置
3. 储存在单一磁盘文件中的一个完整的数据库
4. 数据库文件可以在不同字节顺序的机器间自由的共享
5. 支持数据库大小至2TB
6. 足够小, 大致3万行C代码, 250K
7. 比一些流行的数据库在大部分普通数据库操作要快
8. 简单, 轻松的API
9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定
10. 良好注释的源代码, 并且有着90%以上的测试覆盖率
11. 独立: 没有额外依赖
12. Source完全的Open, 你可以用于任何用途, 包括出售它
13. 支持多种开发语言,C, PHP, Perl, Java, ASP.NET,Python
推荐的SQLite客户端管理工具,火狐插件 Sqlite Manger

二、Android中使用SQLite
我们还是通过一个例子来学习,相关讲解都写在代码注释里。
1、新建一个项目Lesson15_HelloSqlite,Activity起名叫MainHelloSqlite.java
2、编写用户界面 res/layout/main.xml,准备增(insert)删(delete)改(update)查(select)四个按钮,准备一个下拉列表spinner,显示表中的数据。
01 <?xml version="1.0" encoding="utf-8"?>
02 <linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent"android:orientation="vertical"xmlns:android="http://schemas.android.com/apk/res/android">
03
04 <textview android:layout_height="wrap_content"android:layout_width="wrap_content" android:textsize="20sp"android:layout_margintop="5dp" android:id="@+id/TextView01" android:text="SQLite基本操作">
05 </textview>
06
07 <button android:layout_height="wrap_content" android:layout_width="wrap_content"android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button01"android:text="增 | insert" android:minwidth="200dp"></button>
08
09 <button android:layout_height="wrap_content" android:layout_width="wrap_content"android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button02"android:text="删 | delete" android:minwidth="200dp"></button>
10
11 <button android:layout_height="wrap_content" android:layout_width="wrap_content"android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button03"android:text="改 | update" android:minwidth="200dp"></button>
12
13 <button android:layout_height="wrap_content" android:layout_width="wrap_content"android:textsize="20sp" android:layout_margintop="5dp" android:id="@+id/Button04"android:text="查 | select" android:minwidth="200dp"></button>
14
15 <spinner android:layout_height="wrap_content"android:layout_width="wrap_content" android:layout_margintop="5dp"android:id="@+id/Spinner01" android:minwidth="200dp">
16 </spinner>
17
18 <textview android:layout_height="wrap_content"android:layout_width="wrap_content" android:textsize="20sp"android:layout_margintop="5dp" android:id="@+id/TextView02"></textview>
19 </linearlayout>
3、在MainHeloSqlite.java的同目录中新建一个数据库操作辅助类 DbHelper.java,内容如下:
01 package android.basic.lesson15;
02
03 import android.content.Context;
04 import android.database.sqlite.SQLiteDatabase;
05 import android.database.sqlite.SQLiteDatabase.CursorFactory;
06 import android.database.sqlite.SQLiteOpenHelper;
07
08 public class DbHelper extends SQLiteOpenHelper {
09
10 public DbHelper(Context context, String name, CursorFactory factory,
11 int version) {
12 super(context, name, factory, version);
13 }
14
15 //辅助类建立时运行该方法
16 @Override
17 public void onCreate(SQLiteDatabase db) {
18
19 String sql = "CREATE TABLE pic (_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , fileName VARCHAR, description VARCHAR)";
20 db.execSQL(sql);
21 }
22
23 @Override
24 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
25 }
26
27 }
4、MainHelloSqlite.java的内容如下:
001 package android.basic.lesson15;
002
003 import android.app.Activity;
004 import android.content.ContentValues;
005 import android.database.Cursor;
006 import android.database.sqlite.SQLiteDatabase;
007 import android.os.Bundle;
008 import android.view.View;
009 import android.view.View.OnClickListener;
010 import android.widget.AdapterView;
011 import android.widget.AdapterView.OnItemSelectedListener;
012 import android.widget.Button;
013 import android.widget.SimpleCursorAdapter;
014 import android.widget.Spinner;
015 import android.widget.TextView;
016 import android.widget.Toast;
017
018 public class MainHelloSqlite extends Activity {
019
020 //SQLiteDatabase对象
021 SQLiteDatabase db;
022 //数据库名
023 public String db_name = "gallery.sqlite";
024 //表名
025 public String table_name = "pic";
026
027 //辅助类名
028 final DbHelper helper = new DbHelper(this, db_name, null, 1);
029
030 /** Called when the activity is first created. */
031 @Override
032 public void onCreate(Bundle savedInstanceState) {
033 super.onCreate(savedInstanceState);
034 setContentView(R.layout.main);
035
036 //UI组件
037 Button b1 = (Button) findViewById(R.id.Button01);
038 Button b2 = (Button) findViewById(R.id.Button02);
039 Button b3 = (Button) findViewById(R.id.Button03);
040 Button b4 = (Button) findViewById(R.id.Button04);
041
042 //从辅助类获得数据库对象
043 db = helper.getWritableDatabase();
044
045 //初始化数据
046 initDatabase(db);
047 //更新下拉列表中的数据
048 updateSpinner();
049
050 //定义按钮点击监听器
051 OnClickListener ocl = new OnClickListener() {
052
053 @Override
054 public void onClick(View v) {
055
056 //ContentValues对象
057 ContentValues cv = new ContentValues();
058 switch (v.getId()) {
059
060 //添加按钮
061 case R.id.Button01:
062
063 cv.put("fileName", "pic5.jpg");
064 cv.put("description", "图片5");
065 //添加方法
066 long long1 = db.insert("pic", "", cv);
067 //添加成功后返回行号,失败后返回-1
068 if (long1 == -1) {
069 Toast.makeText(MainHelloSqlite.this,
070 "ID是" + long1 + "的图片添加失败!", Toast.LENGTH_SHORT)
071 .show();
072 } else {
073 Toast.makeText(MainHelloSqlite.this,
074 "ID是" + long1 + "的图片添加成功!", Toast.LENGTH_SHORT)
075 .show();
076 }
077 //更新下拉列表
078 updateSpinner();
079 break;
080
081 //删除描述是'图片5'的数据行
082 case R.id.Button02:
083 //删除方法
084 long long2 = db.delete("pic", "description='图片5'", null);
085 //删除失败返回0,成功则返回删除的条数
086 Toast.makeText(MainHelloSqlite.this, "删除了" + long2 + "条记录",
087 Toast.LENGTH_SHORT).show();
088 //更新下拉列表
089 updateSpinner();
090 break;
091
092 //更新文件名是'pic5.jpg'的数据行
093 case R.id.Button03:
094
095 cv.put("fileName", "pic0.jpg");
096 cv.put("description", "图片0");
097 //更新方法
098 int long3 = db.update("pic", cv, "fileName='pic5.jpg'", null);
099 //删除失败返回0,成功则返回删除的条数
100 Toast.makeText(MainHelloSqlite.this, "更新了" + long3 + "条记录",
101 Toast.LENGTH_SHORT).show();
102 //更新下拉列表
103 updateSpinner();
104 break;
105
106 //查询当前所有数据
107 case R.id.Button04:
108 Cursor c = db.query("pic", null, null, null, null,
109 null, null);
110 //cursor.getCount()是记录条数
111 Toast.makeText(MainHelloSqlite.this,
112 "当前共有" + c.getCount() + "条记录,下面一一显示:",
113 Toast.LENGTH_SHORT).show();
114 //循环显示
115 for(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
116 Toast.makeText(MainHelloSqlite.this,
117 "第"+ c.getInt(0) +"条数据,文件名是" + c.getString(1) + ",描述是"+c.getString(2),
118 Toast.LENGTH_SHORT).show();
119 }
120 //更新下拉列表
121 updateSpinner();
122 break;
123 }
124 }
125 };
126
127 //给按钮绑定监听器
128 b1.setOnClickListener(ocl);
129 b2.setOnClickListener(ocl);
130 b3.setOnClickListener(ocl);
131 b4.setOnClickListener(ocl);
132
133 }
134
135 //初始化表
136 public void initDatabase(SQLiteDatabase db) {
137 ContentValues cv = new ContentValues();
138
139 cv.put("fileName", "pic1.jpg");
140 cv.put("description", "图片1");
141 db.insert(table_name, "", cv);
142
143 cv.put("fileName", "pic2.jpg");
144 cv.put("description", "图片2");
145 db.insert(table_name, "", cv);
146
147 cv.put("fileName", "pic3.jpg");
148 cv.put("description", "图片3");
149 db.insert(table_name, "", cv);
150
151 cv.put("fileName", "pic4.jpg");
152 cv.put("description", "图片4");
153 db.insert(table_name, "", cv);
154
155 }
156
157 //更新下拉列表
158 public void updateSpinner() {
159
160 //定义UI组件
161 final TextView tv = (TextView) findViewById(R.id.TextView02);
162 Spinner s = (Spinner) findViewById(R.id.Spinner01);
163
164 //从数据库中获取数据放入游标Cursor对象
165 final Cursor cursor = db.query("pic", null, null, null, null, null,
166 null);
167
168 //创建简单游标匹配器
169 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
170 android.R.layout.simple_spinner_item, cursor, new String[] {
171 "fileName", "description" }, new int[] {
172 android.R.id.text1, android.R.id.text2 });
173 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
174
175 //给下拉列表设置匹配器
176 s.setAdapter(adapter);
177
178 //定义子元素选择监听器
179 OnItemSelectedListener oisl = new OnItemSelectedListener() {
180
181 @Override
182 public void onItemSelected(AdapterView<?> parent, View view,
183 int position, long id) {
184 cursor.moveToPosition(position);
185 tv.setText("当前pic的描述为:" + cursor.getString(2));
186 }
187
188 @Override
189 public void onNothingSelected(AdapterView<?> parent) {
190 }
191 };
192
193 //给下拉列表绑定子元素选择监听器
194 s.setOnItemSelectedListener(oisl);
195 }
196
197 //窗口销毁时删除表中数据
198 @Override
199 public void onDestroy() {
200 super.onDestroy();
201 db.delete(table_name, null, null);
202 updateSpinner();
203 }
204 }
5、运行程序,查看结果:




本例使用的是SQLiteDatabase已经封装好的insert,delete,update,query方法,感兴趣的同学可以用SQLiteDatabase的execSQL()方法和rawQuery()方法来实现。
发表评论
-
startActivityForResult 简介
2011-03-29 15:55 1284依次打开Activity A1--A2--A3--A4 这时 ... -
startActivityForResult
2011-03-29 15:49 1146startActivityForResult 方法-- ... -
史上最全的Android的Tab与TabHost讲解
2011-03-28 11:22 1591Tab与TabHost 这就是Tab,而盛放Tab的 ... -
Android对话框
2011-03-25 11:21 1125Android 对话框(Dialog)大全 ... -
PreferenceActivity详解
2011-03-25 11:15 1442为了引入这个概率 首先从需求说起 即:现有某Activity专 ... -
TCP/UDP/HTTP
2011-03-25 11:09 1125先来一个讲TCP、UDP和HTTP ... -
9png
2011-03-25 11:08 1914今天学习了用9png图来优化横屏竖屏的UI,使用sdk自带的工 ... -
Notification
2011-03-25 11:07 939Android系统的状态栏(Status Bar)中有一个创新 ... -
一些技巧
2011-03-25 11:03 7871:查看是否有存储卡插入 String status=Envi ... -
布局像素单位
2011-03-25 11:03 827Android的layout文件中有时候可能会指定具体的单位, ... -
使用ActivityGroup来切换Activity和Layout
2011-03-25 11:02 1135在一个主界面中做Activity切换一般都会用TabActiv ... -
activitygroup
2011-03-25 11:01 1730说说tabhost和activitygroup 最近 ... -
线程
2011-03-25 11:01 1014今天在论坛上看到一些关于线程的帖子,我觉得与我理解的有些差异, ... -
类级框架
2011-03-25 11:00 744类集框架:Collection,Map,Iterator,En ... -
Intent打电话
2011-03-25 11:00 1217intent英文意思是意图,pending表示即将发生或来临的 ... -
Intent Uri
2011-03-25 10:59 1068进入联系人页面 1.Intent intent = new I ... -
Service
2011-03-25 10:59 940一、Service的概念 Service是Android程序中 ... -
Broadcast Receiver
2011-03-25 10:56 1948一、Broadcast Receiver简介 Android中 ... -
ContentProvider MIME类型
2011-03-25 10:55 1238Android程序的主要4部分 ... -
ContentProvider-1查询
2011-03-25 10:55 1237今天看了android的官方文档中ContentProvide ...
相关推荐
SQLite例子BCB2010,
标题"Unity3d使用sqlite例子"表明我们将探讨如何在Unity3D项目中使用SQLite数据库进行数据管理。这个例子可能是通过一个具体的项目或脚本来展示如何与SQLite交互,包括创建数据库、表,以及插入、查询和更新数据等...
这个"Android例子源码适合新手的SQLite例子"提供了一个很好的起点,帮助开发者理解和掌握如何在Android应用中使用SQLite来存储和管理数据。 首先,SQLite数据库在Android中的主要用途是持久化数据,即使应用关闭或...
标题中的“两个 AIR SQLite 例子”指的是使用Adobe Integrated Runtime (AIR) 平台与SQLite数据库交互的两个实际应用示例。SQLite是一个轻量级、自包含的数据库引擎,常用于桌面应用程序,包括那些使用Adobe AIR开发...
压缩包中的"安卓 Andorid SQLite例子打包"可能包含了一个完整的Android Studio项目,包括`DBHelper`、`MainActivity`等源码文件,以及相关的资源文件。通过解压并导入Android Studio,开发者可以学习和参考这个示例...
这个"很容易入门的SQLite例子"是专为初学者设计的,通过在Windows平台上使用Visual Studio 2005进行编程,能够帮助你快速理解和掌握SQLite的基本操作。 在Windows上,Visual Studio 2005是一个强大的开发环境,支持...
SQLite例子源码是一个为新手演示SQLite增删改查的例子源码。可以作为新手学习SQLite的例子,添加成功以后会使用ListView显示历史数据,点击任意一条数据即可删除数据。本项目默认编码GBK编译版本4.2.2。
3. **最小API**:新引入的最小API允许开发者以更简洁的方式创建HTTP端点,但在这个例子中,我们仍使用MVC架构。 4. **性能提升**:ASP.NET Core 6针对性能进行了大量优化,包括更快的启动时间和内存消耗降低。 ...
在Delphi开发环境中,FireDAC(Firebird Data Access Components)是一个强大的数据库访问组件集,它支持多种数据库...通过这个简单的例子,开发者可以了解到在Delphi中如何利用FireDAC高效地管理和操作SQLite数据库。
本例子是一个为新手演示SQLite增删改查的例子源码。可以作为新手学习SQLite的例子,添加成功以后会使用ListView显示历史数据,点击任意一条数据即可删除数据。本项目默认编码GBK编译版本4.2.2。
在这个“android SQLite例子”中,我们将探讨如何在Android应用中使用SQLite数据库进行基本操作,如创建数据库、创建表、插入数据、查询数据以及更新和删除数据。 首先,我们需要在Android项目中添加SQLite的库。在...
这个例子对于初学者来说是一个很好的起点,帮助理解如何在实际项目中结合SQLite和C#进行数据库开发。在实践中,你还可以探索更高级的主题,如存储过程、触发器、索引优化等,以提升数据库性能。
在IT行业中,数据库管理系统是不可或缺的一部分,而SQLite作为一个轻量级、开源的嵌入式数据库,常被用于桌面应用和移动开发。C#,作为.NET Framework的主要编程语言,结合SQLite可以构建高效、可靠的数据存储解决...
在这个例子中,我们没有涉及到事务处理、错误处理或更复杂的查询,但在实际开发中这些都是必不可少的。在"SQLite4Web"这个文件中,可能包含了将这些概念应用于Web应用程序的代码示例,比如ASP.NET或其他Web框架。...
《C#与SQLite数据库操作详解》 SQLite是一个轻量级的、开源的、自包含的数据库引擎,广泛应用于各种跨平台的应用程序中。C#作为.NET框架的主要编程语言,提供了丰富的库来支持SQLite数据库的交互。本文将详细介绍...
SQLite是一个开源的关系型数据库系统,它被广泛应用于各种操作系统和应用程序中,特别是在移动设备和嵌入式系统上。本示例将向您介绍如何在本地使用SQLite创建数据库、存储数据并进行基本的操作。 首先,我们需要...
在这个"sqlite操作例子"中,我们将探讨如何在Android环境下进行SQLite数据库的基本操作,包括数据库的创建、表的建立以及数据的增删改查。 一、数据库的创建 在Android中,SQLite数据库通常是通过SQLiteOpenHelper...
System.Data.SQLite是一个开源的.NET框架库,它为C#开发者提供了与SQLite数据库交互的能力。SQLite是一个轻量级的、自包含的、无服务器的SQL数据库引擎,常用于嵌入式应用,如桌面应用或者单机应用程序。在这个...