创建数据库:
/**
* Created by Administrator on 2015/9/7.
*/
public class MysqLiteOpenHelper extends sqliteOpenHelper {
public MysqLiteOpenHelper(Context context,String name,sqliteDatabase.CursorFactory factory,int version) {
super(context,name,factory,version);
}
this(context,128)">null,255)">1);
}
@Override
public void onCreate(sqliteDatabase db) {
db.execsql("create table if not exists user("
+ "id integer primary key,"
"name varchar(20),0)">"password integer(20))");
}
public void onUpgrade(sqliteDatabase db,128)">int oldVersion,128)">int newVersion) {
}
}
在主函数中,必须调用
Create and/or open a database that will be used for reading and writing.
|
/**创建数据库*/添加数据
MysqLiteOpenHelper MysqLiteOpenHelper = new MysqLiteOpenHelper(getApplicationContext(),0)">"MY_FIRST_DB.db");
/**调用getWritableDatabase完成创建*/
sqliteDatabase database = MysqLiteOpenHelper.getWritableDatabase();
long
|
Convenience method for inserting a row into the database.
|
table 要插入数据的表的名称
values:一个ContentValues对象,类似一个map.通过键值对的形式存储值。
nullColumnHack:
当values参数为空或者里面没有内容的时候,我们insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情况,我们要在这里指定一个
列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入。
case R.id.button_insert:
ContentValues values = new ContentValues();
values.put("name",0)">"张三");
values.put("password",0)">"123456");
database.insert("user",values);
break;
另一种方法(通过sql语句):
删除数据
int
|
Convenience method for deleting rows in the database.
|
table:表名
whereClause:删除的条件
whereArgs:条件的参数
同样有2种方式可以实现
123使用execsql方式的实现
12
删除所有数据:
database.delete("1",128)">null);
修改数据
Convenience method for updating rows in the database.
ContentValues values1 = new ContentValues();
values1.put("王五");
values1.put(125544);
database.update("name = '张三'",128)">null);
database.update("user","name = '?'");
同上,仍是2种方式
12345使用execsql方式的实现
12
查询数据:
使用sql语句获得游标
Cursor c = .rawQuery("select * from user",null);
query(
Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy,Stringlimit)
Query the given table,returning a over the result set.
|
|
Query the given URL,StringorderBy)
Query the given table,%20java.lang.String%29" style="background-color:inherit" rel="nofollow">query(boolean distinct,Stringlimit)
Query the given URL,returning a over the result set.
|
数据查询相对前面几种方法就复杂一些了,因为查询会带有很多条件
通过query实现查询的
public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit)
各参数说明:
- table:表名称
- colums:列名称数组
- selection:条件子句,相当于where
- selectionArgs:条件语句的参数数组
- groupBy:分组 GROUP BY NAME 如:name
- having:分组条件 HAVING count(name)<2; 如:count(name)<2
- orderBy:排序类 正序:ISA 倒序:IDSC 如:id ASC
- limit:分页查询的限制 2 offset 2 如 2,3 (offset用,代替) 偏移量在钱,数量在后
- Cursor:返回值,相当于结果集ResultSet 可以通过上网查询:http://www.w3school.com.cn/sql/sql_having.asp
针对游标(Cursor)也提供了不少方法
方法名称 | 方法描述 |
---|---|
getCount() | 总记录条数 |
isFirst() | 判断是否第一条记录 |
isLast() | 判断是否最后一条记录 |
moveToFirst() | 移动到第一条记录 |
moveToLast() | 移动到最后一条记录 |
move(int offset) | 移动到指定的记录 |
moveToNext() | 移动到吓一条记录 |
moveToPrevIoUs() | 移动到上一条记录 |
getColumnIndex(String columnName) | 获得指定列索引的int类型值 |
遍历的方法:
stringBuffer = new StringBuffer();
Cursor c = database.query(null);//查询并获得游标
if(c.moveToFirst()){//判断游标是否为空
while(c.moveToNext()){
String username = c.getString(c.getColumnIndex("name"));
int password = c.getInt(c.getColumnIndex("password"));
stringBuffer.append(username + password);
Log.d("select",stringBuffer.toString());
}
}
mTextView.setText(stringBuffer.toString());
实现代码
1
2
3
4
5
6
7
8
|
|
通过rawQuery实现的带参数查询
1
2
3
4
|
|