特点:
2. 支持的数据类型:只有这五种!!!!!!
3. 注意事项:
4. 使用:
sqliteDatabase:
常用方法:
要学会使用官方的文档:
5. 案例一:创建一个数据库:
第一步:改写MainActivity文件:
package com.example.sqlight; import android.os.Bundle; import android.app.Activity; import android.database.sqlite.sqliteDatabase; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 每个程序的数据库都是唯一的,都有自己的数据库,默认情况下是各自互相不干扰 // 创建一个数据库并打开,第一个参数是数据库名,加后缀是为了以后导出后使用方便。第二个参数factory是权限,第三个参数是实例化的什么什么 sqliteDatabase db = openOrCreateDatabase("user.db",MODE_PRIVATE,null); // 执行原生语句:主键的名字最好一定要前面加下划线。 db.execsql("create table if not exists usertb(_id integer primary key autoincrement," + "name text not null," + "age integer not null," + "sex text not null)"); db.execsql("insert into usertb(name,sex,age) values('张三','女','18')"); } }第二步:查看数据库:
File Expoler---data---data---com.example.sqlight(包名.类名)---databases---user.db
但这个user.db一般是不能查看的,不过可以下载一个软件叫Navicat+Preminum:
当程序中表的内容发生变化时,再次导出,导出后上面这个页面不需要再次加载,表的内容它会自动刷新的。
介绍以下目录:
第一个data目录是所有App的数据目录;
第二个data目录是每一个应用程序的包名.类名;
第三步:查询:
package com.example.sqlight; import android.os.Bundle; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.sqliteDatabase; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 每个程序的数据库都是唯一的,都有自己的数据库,默认情况下是各自互相不干扰 // 创建一个数据库并打开,'18')"); db.execsql("insert into usertb(name,age) values('张四','男','20')"); // 查询:第二个参数是查询条件: Cursor c = db.rawQuery("select * from usertb",null); if (c != null) { // 游标移动到第一条: c.moveToFirst(); // 如果还有下一条 while (c.moveToNext()) { // 这里取得是第一个字段的int值 Log.i("info","_id: " + c.getInt(c.getColumnIndex("_id"))); Log.i("info","name: " + c.getString(c.getColumnIndex("name"))); Log.i("info","age: " + c.getInt(c.getColumnIndex("age"))); Log.i("info","sex: " + c.getString(c.getColumnIndex("sex"))); Log.i("info","一次啦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); } // 最好用户自己手动的释放游标: c.close(); } db.close(); } }效果图:
6. 案例二:
修改MainActivity:
package com.example.sqlite; import android.os.Bundle; import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.sqliteDatabase; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { public static final String TABLENAME = "stutb"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建数据库: sqliteDatabase db = openOrCreateDatabase("stu_db",null); // 注意TABLENAME左右的空格: db.execsql("create table if not exists "+TABLENAME+" (_id integer primary key autoincrement," + "sex text not null," + "age integer not null)"); // 插入操作: ContentValues values = new ContentValues(); // Hash Map values.put("name","张三"); values.put("age",19); values.put("sex","男"); long rowId = db.insert("stutb",null,values); values.clear(); values.put("name","张四"); values.put("age",24); values.put("sex","女"); db.insert("stutb","五五"); values.put("age",10); values.put("sex","张六"); values.put("age","男"); db.insert("stutb","张七"); values.put("age","八八"); values.put("age",values); // 更新操作: values.clear(); values.put("sex","女"); // 将全部id大于三的用户性别都改成女人 db.update("stutb",values,"_id>?",new String[]{"3"}); // 删除操作: // 将姓名中包含张的所有用户都删除: db.delete("stutb","name like ?",new String[]{"张%"}); // 再查询: Cursor c = db.query("stutb",new String[]{"0"},"name"); if(c!=null){ // 查询所有字段 String[] columns = c.getColumnNames(); // 对每一条信息 while(c.moveToNext()){ // 打印它的每一个字段内容 for(String columnNmae:columns){ Log.i("info",c.getString(c.getColumnIndex(columnNmae))); } } c.close(); } db.close(); } }效果图:
7. sqliteOpenHelper的使用:
案例:
第一步:创建一个新类来继承实现sqliteOpenHelper:
package com.example.sqliteopenhelper; import android.content.Context; import android.database.sqlite.sqliteDatabase; import android.database.sqlite.sqliteDatabase.CursorFactory; import android.database.sqlite.sqliteOpenHelper; public class DBOpenHelper extends sqliteOpenHelper { // 这个构造函数是可以自己改写的。 public DBOpenHelper(Context context,String name) { super(context,name,1); // TODO Auto-generated constructor stub } /* * 首次创建数据库的时候调用,一般可以把建库建表的操作放这里 */ @Override public void onCreate(sqliteDatabase db) { // TODO Auto-generated method stub db.execsql("create table if not exists stutb(_id integer primary key autoincrement," + "age integer not null)"); db.execsql("insert into stutb(name,18)"); } /* * 当数据库的版本发生变化的时候,会自动执行 */ @Override public void onUpgrade(sqliteDatabase arg0,int arg1,int arg2) { // TODO Auto-generated method stub } }第二步:修改MainActivity活动文件:
package com.example.sqliteopenhelper; import android.os.Bundle; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.sqliteDatabase; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // DBOpenHelper是我们自己新建的类 DBOpenHelper helper = new DBOpenHelper(MainActivity.this,"stu.db"); //helper.getReadableDatabase();// 获取一个只读的数据库,只能查询 不能写入 不能更新 sqliteDatabase db = helper.getWritableDatabase(); // 可读可写 //db.query(table,columns,selection,selectionArgs,groupBy,having,orderBy); Cursor c = db.rawQuery("select * from stutb",null); if(c != null){ String[] cols = c.getColumnNames(); while(c.moveToNext()){ for(String ColumnName:cols){ Log.i("info",ColumnName+":"+c.getString((c.getColumnIndex(ColumnName)))); } } c.close(); } db.close(); } }效果图:
原文链接:https://www.f2er.com/sqlite/199492.html