SQL
2017-07-14 14:53 烈'焰 阅读(172) 评论(0) 收藏 举报安卓为了更好的管理数据库,它向我们提供了一个SQLiteOpenHelp帮助类,SQLiteOpenHelp它是一个抽象类,如果要使用它就要写一个类继承它,其中有两个方法,onCreate()和onUpgrade()方法,一个是实现创建,另一个实现升级数据库。SQLiteOpenHelp中有两个非常重要的实例方法,getReadableDatabase()和getWritableDatabase(),这两个方法都可以创建和打开数据库
1.创建数据库,首先创建一个类继承SQLiteOpenHelp
2.以字符串形式写出创建表的语句
3.在onCreate()方法中执行db.execSQL(创建的字符串)方法来执行创建表的语句
4.注意:如果你创建了一个表在添加表进行创建时候,将无法进行创建,这时候我们怎么办??
我们在创建的类中还有一个方法没有用到,那就是数据库更新方法,我们可以在里面执行删除语句,如果创建了一个表我们在创建的时候删除原来的表。
db.execSQL("drop table if exists +创建的表名")
5.我们定义好了可是怎么执行呢??
这个简单只要在MainActivity中将我们定义的参数1改为2就ok了。
public class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREAT_BOOK = "create table Book( auther text," +
"price real ," +
"pages integer," +
"name text)";
public static final String CREAT_CATEGORY = "create table Category(id integer primary key autoincrement," +
"category_name text," +
"category_code integer)";
private Context mContext;
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREAT_BOOK);
db.execSQL(CREAT_CATEGORY);
Toast.makeText(mContext,"成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//如果有重名的数据库就删除
db.execSQL("drop table if exists Book");
db.execSQL("drop table if exists Category");
onCreate(db);
}
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper dbHelpe;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button seave= (Button) findViewById(R.id.seave);
dbHelpe = new MyDatabaseHelper(this,"BookStore.db",null,2);
seave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建数据库
dbHelpe.getWritableDatabase();
}
});
通过上面的代码我们创建好了数据库,下面我们向数据库中插入数据
1.通过我们创建的MyDatabaseHelper类调用getReadableDatabase()用来读取
2.创建ContentValuer对象,然后用此对象调用put()添加对象
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelpe.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("auther", "haha");
values.put("price", 19.9);
values.put("pages", 90);
values.put("name", "Tom");
db.insert("Book", null, values);
values.clear();
values.put("auther", "hehe");
values.put("price", 30.7);
values.put("pages", 20);
values.put("name", "LiSi");
db.insert("Book", null, values);
Toast.makeText(getApplicationContext(), "Succes", Toast.LENGTH_SHORT).show();
}
});
2.更新数据
1.通过我们创建的MyDatabaseHelper类调用getReadableDatabase()用来读取
2.数据重组
3.最后调用updata()里面4个参数第一个为表名,二,ContentValuer对象,3是需要修改的条件,4,建立一个数组给要改的条件值
Button update = (Button) findViewById(R.id.update);
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelpe.getReadableDatabase();
ContentValues values = new ContentValues();//重新组装
values.put("auther", "aaaa");
db.update("Book", values, "name = ?", new String[]{"LiSi"});
}
});
3.查看数据库内容
Button find = (Button) findViewById(R.id.find);
find.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelpe.getReadableDatabase();
//查询表中内容
Cursor cursor = db.query("Book", null, null, null, null, null, null);
if (cursor.moveToFirst()) {//判断指针是否在一行的开头
do {
//根据键值获取值
String name = cursor.getString(cursor.getColumnIndex("name"));
String auther = cursor.getString(cursor.getColumnIndex("auther"));
int pages = cursor.getInt(cursor.getColumnIndex("pages"));
Float price = cursor.getFloat(cursor.getColumnIndex("price"));
Log.d("aaa", name);
Log.d("aaa", auther);
Log.d("aaa", String.valueOf(pages));
Log.d("aaa", String.valueOf(price));
} while (cursor.moveToNext());//向下一行移动
}
cursor.close();
}
});
浙公网安备 33010602011771号