1.创建数据库
Android为我们提供了SQLiteOpenHelper的一个抽象类。实现对数据库的创建和升级。因为是一个抽象类所以就需要我们创建一个帮助类去继承它。SQLiteOpenHelper有两个抽象方法:onCreate 和 onUpgrade。我们必须重载这两个方法。
我们得到一个SQLiteDatabase需要使用SQLiteOpenHelper中的两个方法:
{
g
e
t
R
e
a
d
a
b
l
e
D
a
t
a
b
a
s
e
(
)
:
当
磁
盘
满
了
,
返
回
的
对
象
以
只
读
的
方
式
打
开
数
据
库
g
e
t
W
r
i
t
a
b
l
e
D
a
t
a
b
a
s
e
(
)
:
当
磁
盘
满
了
,
会
报
错
.
。
。
。
。
。
。
。
。
。
。
。
。
。
\left\{ \begin{aligned} getReadableDatabase() :当磁盘满了,返回的对象以只读的方式打开数据库\\ getWritableDatabase():当磁盘满了,会报错.。。。。。。。。。。。。。\\ \end{aligned} \right.
{getReadableDatabase():当磁盘满了,返回的对象以只读的方式打开数据库getWritableDatabase():当磁盘满了,会报错.。。。。。。。。。。。。。
现在我新建一个类DBHelper继承SQLiteOpenHelper:
public class DBHelper extends SQLiteOpenHelper {
//使用者登录信息
private static final String T_UserInfo =
"create table T_UserInfo("
+ "id varchar,"//id
+ "account varchar,"//手动输入的账号
+ "name varchar,"//账号姓名
+ "pwd varchar)";//pwd
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(T_UserInfo);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists T_UserInfo");
onCreate(db);
}
}
构造函数里的参数解释:
- 第一个参数 Context
- 第二个参数 数据库名
- 第三个参数 一般传入null
- 第四个参数 数据库的版本号。当版本号不同的时候,会调用onUpgrade()方法更新数据库
DBHelper创建完成 ,现在在Activity里面进行数据库的创建:
当点击按钮时进行数据库的创建
public class MainActivity extends AppCompatActivity{
DBHelper dbhelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbhelper = new DBHelper(context,"text.db",null,1);
button.setOnClickListener(new View.OnClickListener(){
@Overide
public void onClick(View v){
SQLiteDatabase db = dbhelper.getWritableDatabase();//数据库创建完毕,以后对数据库的操作就可以通过db这个对象进行操作
}
});
}
}
2.添加数据
使用的是SQLiteDatabase中的insert()方法
insert有三个参数,第一个:数据库名。第二个:一般都写null。第三个:ContentValues对象用来放值。
示例:
public class MainActivity extends AppCompatActivity{
DBHelper dbhelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbhelper = new DBHelper(context,"text.db",null,1);
button.setOnClickListener(new View.OnClickListener(){
@Overide
public void onClick(View v){
SQLiteDatabase db = dbhelper.getWritableDatabase();//数据库创建完毕,以后对数据库的操作就可以通过db这个对象进行操作
ContentValues values = new ContentValues();
values.put("id","1");
values.put("account","1821864");
values.put("name","张三");
values.put("pwd","123");
db.insert("T_UserInfo",null,values);
values.clear();
values.put("id","2");
values.put("account","75244");
values.put("name","张无");
values.put("pwd","1333");
db.insert("T_UserInfo",null,values);
}
});
}
}
3.更新数据
使用的是SQLiteDatabase中的update()方法
update有四个参数,第一个:数据库名。第二个:ContentValues对象用来放值。第三个和第四个用来约束更新某一行或者某几行中的数据。
示例:
public class MainActivity extends AppCompatActivity{
DBHelper dbhelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbhelper = new DBHelper(context,"text.db",null,1);
button.setOnClickListener(new View.OnClickListener(){
@Overide
public void onClick(View v){
SQLiteDatabase db = dbhelper.getWritableDatabase();//数据库创建完毕,以后对数据库的操作就可以通过db这个对象进行操作
ContentValues values = new ContentValues();
values.put("name","张四");
db.update("T_UserInfo",values,"id = ?",new String[]{"1"});
}
});
}
}
4.删除数据
使用的是SQLiteDatabase中的delete()方法
delete有三个参数,第一个:数据库名。第二 和 第三个用来约束删除某一行或者某几行中的数据。
示例:
public class MainActivity extends AppCompatActivity{
DBHelper dbhelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbhelper = new DBHelper(context,"text.db",null,1);
button.setOnClickListener(new View.OnClickListener(){
@Overide
public void onClick(View v){
SQLiteDatabase db = dbhelper.getWritableDatabase();//数据库创建完毕,以后对数据库的操作就可以通过db这个对象进行操作
db.delete("T_UserInfo","id = ?",new String[]{"1"});
}
});
}
}
5.查询数据
使用的是SQLiteDatabase中的delete()方法
delete有三个参数,第一个:数据库名。第二个:指定去查询哪几列。第三个和第四个用于约束查询某一行或某几行的数据,第五个:指定需要去group by 的列。第六个指定对数据的排序。
public class MainActivity extends AppCompatActivity{
DBHelper dbhelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbhelper = new DBHelper(context,"text.db",null,1);
button.setOnClickListener(new View.OnClickListener(){
@Overide
public void onClick(View v){
SQLiteDatabase db = dbhelper.getWritableDatabase();//数据库创建完毕,以后对数据库的操作就可以通过db这个对象进行操作
Cursor cursor = db.query("T_UserInfo",null,null,null,null,null,null);
if(cursor.moveToFirst()){
do{
String id = cursor.getString(cursor.getColumnIndex("id"));
}while(cursor.moveToNext());
}
cursor.close();
}
});
}
}
还有一种写法
添加数据:
db.execSQL(“insert into book(name,author,pages,price) values(?,?,?,?)”,new String[]{“yu”,“yu”,“454”,“16.63”});
更新数据:
db.execSQL(“update book set price =? where name = ?”,new String[]{“10.90”,“yu”});
删除数据:
db.execSQL(“delete from book where pages > ?”,new String[]{“500”});
查询数据:
db.rawQuery(“select * form book”,null);