扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Android SQLite3基础中如何建立数据库,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
创新互联公司是专业的西安网站建设公司,西安接单;提供成都网站制作、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行西安网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
背景
SQLite 是一个非常流行的嵌入式数据库,它提供了一个清爽的 SQL 接口,相当小的内存占用和高速的响应,更 Happy 的是他还是免费的,大家都可以尽情的使用,很多牛叉的公司(诸如 Adobe,Apple,Google,Sun,Symbian ),开源项目( Mozilla,PHP,Python )都在产品中装配 SQLite.
SQLite3 特征
和传统关系数据库比较
有的:
Sql 语句: SELECT INSERT UPDATE
CREATE DROP
数据类型:
不区分大小写
TEXT 文本
NUMERIC 数值
INTEGER 整型
REAL 小数
NONE 无类型
没有的:
FOREIGN KEY 外键约束
RIGHT OUTER JOIN 和 FULL OUTER JOIN
ALTER TABLE
开始动手
动手之前,确认你的机器中已经配置好如下环境:
Android 开发环境(怎么配置问 Google ,有很多)
本文档适用环境 Android 1.0
1, 建库
方式一:命令行方式(适合调试用)
可以使用 adb shell 进入设备后台,命令行方式手动创建,步骤如下:
Eclipse 中启动模拟器之后, cmd 下输入进入设备 Linux 控制台
D:\>adb shell
之后进入应用 data 目录
# cd /data/data
ls 列表目录,查看文件,找到你的项目目录并进入
查看有无 databases 目录,如果没有,则创建一个
# mkdir databases
cd databases 进入并创建数据库
# sqlite3 friends.db
sqlite3 friends.db
SQLite version 3.5.9
Enter ".help" for instructions
sqlite>
ctrl+d 退出 sqlite 提示符 ls 列表目录会看到有一个文件被创建 friends.db
他就是 SQLite 的库文件
# ls
ls
friends.db
方式二:编码方式(使用更多)
android.content.Context 中提供了函数 , 注: Activity 是 Context 的子类
openOrCreateDatabase () 来创建我们的数据库
db = context .openOrCreateDatabase(
String DATABASE_NAME , int Context. MODE_PRIVATE , null );
String DATABASE_NAME 数据库的名字
Int MODE 操作模式 Context.MODE_PRIVATE 等
CursorFactory 指针工厂 ,本例中传入 null ,暂不用
2, 建表
命令行方式
# sqlite3
sqlite> create table widgets (id integer primary key autoincrement,name text);
3, 插入数据
命令行 增加,查询数据
sqlite> insert into widgets values(null,'tom');
insert into widgets values(null,'tom');
sqlite> select * from widgets;
select * from widgets;
1|tom
sqlite>
API 方式
package org.imti; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /** * SQLite Demo * * 供Activity私有访问的数据库 没有使用ContentProvider 方式 增加 查询数据 * * @author daguangspecial@gmail.com * */ public class DbDemo extends Activity { EditText inputTxt; Button btnAdd; Button btnViewAll; TextView viewAll; DBHelper db; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(R.layout.dbdemo); // 初始化UI btnAdd = (Button) findViewById(R.id.btnAdd); btnViewAll = (Button) findViewById(R.id.btnViewAll); viewAll = (TextView) findViewById(R.id.viewAll); inputTxt = (EditText) findViewById(R.id.txtInput); // 初始化DB db = new DBHelper(this); // 初始化监听 OnClickListener listener = new OnClickListener() { public void onClick(View v) { if (v.getId() == R.id.btnAdd) { // 增加 db.save(inputTxt.getText().toString()); db.close(); } else if (v.getId() == R.id.btnViewAll) { // 浏览所有数据 Cursor cur = db.loadAll(); StringBuffer sf = new StringBuffer(); cur.moveToFirst(); while (!cur.isAfterLast()) { sf.append(cur.getInt(0)).append(" : ").append( cur.getString(1)).append("\n"); cur.moveToNext(); } db.close(); viewAll.setText(sf.toString()); } } }; btnAdd.setOnClickListener(listener); btnViewAll.setOnClickListener(listener); } }
Java代码
package org.imti; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; /** * 数据库操作工具类 * * @author daguangspecial@gmail.com * */ public class DBHelper { private static final String TAG = "DBDemo_DBHelper";// 调试标签 private static final String DATABASE_NAME = "dbdemo.db";// 数据库名 SQLiteDatabase db; Context context;//应用环境上下文 Activity 是其子类 DBHelper(Context _context) { context = _context; //开启数据库 db = context.openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,null); CreateTable(); Log.v(TAG, "db path=" + db.getPath()); } /** * 建表 * 列名 区分大小写? * 都有什么数据类型? * SQLite 3 * TEXT 文本 NUMERIC 数值 INTEGER 整型 REAL 小数 NONE 无类型 * 查询可否发送select ? */ public void CreateTable() { try { db.execSQL("CREATE TABLE t_user (" + "_ID INTEGER PRIMARY KEY autoincrement," + "NAME TEXT" + ");"); Log.v(TAG, "Create Table t_user ok"); } catch (Exception e) { Log.v(TAG, "Create Table t_user err,table exists."); } } /** * 增加数据 * @param id * @param uname * @return */ public boolean save(String uname){ String sql=""; try{ sql="insert into t_user values(null,'"+uname+"')"; db.execSQL(sql); Log.v(TAG,"insert Table t_user ok"); return true; }catch(Exception e){ Log.v(TAG,"insert Table t_user err ,sql: "+sql); return false; } } /** * 查询所有记录 * * @return Cursor 指向结果记录的指针,类似于JDBC 的 ResultSet */ public Cursor loadAll(){ Cursor cur=db.query("t_user", new String[]{"_ID","NAME"}, null,null, null, null, null); return cur; } public void close(){ db.close(); } }
截图:
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流