六 SQLite 数据库存储数据

来源:互联网 发布:java中的设计模式 编辑:程序博客网 时间:2024/06/05 18:01
目的:
=修改数据库里的内容
=创建数据库+写入

SQLiteOpenHelper作用:
=数据库打开帮助   
=创建+升级
=帮写入?
=onCreate+onUpgrade
=db.execSQL+
=数据库起名并对设置其内容格式+

Activity作用:
=写入
=get数据库+增加Add(contentValues.put写下内容+insert插入到数据库   )
 +游标query(查询)+删除delete+更新update(更改)

-----------------------------------------------------------------------------------------------------------
步骤:
1、创建SQLiteOpenHelper并继承
        *新建文件夹         java-包-database
        *新建类                         extends
2、构造器        
        * super(context,数据库名,null,数据库版本 )
3、onCreate(SQLiteDatabase db)
         *创建表格,并设计格式  
           db.execSQL("create table 表格名(内容名 varchar(字节数) not null,内容名 varchar(字节数) not null,))    
3、onUpgrade(SQLiteDatabase db)
          *升级的内容
-------------------------------------------------------------------------------------------------------

步骤:
1、创建Activity并继承
2、onCreate  并关联xml
3、引用数据库,并得到它
   * new DatabaseHelper(this)
   *  .getWritableDatabase()
4、进行操作,如:
<1>增 add
    *  新建键值对         new ContentValues();
    *  写入到数据库     .put(数据库.内容标题,”内容“)
    *  插入                   .insert(表格名,null,contentValues)
<2>删 delete
    * 找到 内容的名字   whereClauseString
    * 找到内容       whereArgsString
* 删除                 .delete(表格名,内容标题,内容)
<3>改 update
    * 新建键值对         new ContentValues();
    * 写入到数据库     .put(数据库.内容标题,”内容“)
    *  找到 内容的名字   whereClauseString
    * 找到内容       whereArgsString
    * .update(表格名,contentValues, whereClauseString,whereArgsString)
<4>查 query
   *  一次性遍历完这个表格里所有的数据          cursor =      .query(表格名,null,null,null,null,null,null)
 
   *一个个遍历一遍   .moveToNext
             从第一个开始找        if(cursor.moveToFirst())
            得到之前遍历的条数                   cursor.getCount()
            得到内容标题,遍历          .getString(内容标题)
                遍历(下一个)              .moveToNext
<5>事务
    * 开始事务      .beginTransaction
    * 做你的操作     如:   .execSQL()
    * 设置成功      setTransactionSuccessful
    * 关闭提交      .endTransaction

-------------------------------------------------------------------------------------------------


SQLiteOpenHelper
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DatabaseHelper extends SQLiteOpenHelper {

public static final String USER_TABLE_NAME = "user";
public static final String USERNAME = "username";
public static final String AGE = "age";
public static final String DATABASE_NAME = "test.db";

public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 2);
}

@Override
public void onCreate(SQLiteDatabase db) {
//db.execSQL("create table 表格名(列名 varchar(20) not null,列名 varchar(20) not null);");
db.execSQL("create table " + USER_TABLE_NAME + "(" + USERNAME + " varchar(20) not null, " + AGE + " varchar(60) not null);");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO: on database upgrade operation
}
}
Activity
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.geekband.Test01.database.DatabaseHelper;


public class DatabaseButtonActivity extends AppCompatActivity {

private SQLiteDatabase mSqLiteDatabase;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database);

DatabaseHelper databaseHelper = new DatabaseHelper(this);
mSqLiteDatabase = databaseHelper.getWritableDatabase();

// Add:

findViewById(R.id.add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

// IO操作,建议后台操作
ContentValues contentValues = new ContentValues();
contentValues.put(DatabaseHelper.USERNAME, "小明");
contentValues.put(DatabaseHelper.AGE, "1");

long rowNumber = mSqLiteDatabase.insert(DatabaseHelper.USER_TABLE_NAME, null , contentValues);
if(rowNumber != -1){
Toast.makeText(DatabaseButtonActivity.
this, "插入成功", Toast.LENGTH_SHORT).show();
}
// query :
// 游标
Cursor cursor = mSqLiteDatabase.query(DatabaseHelper.USER_TABLE_NAME,null,null,null,null,null,null);
Log.i(MainActivity.class.getSimpleName(), i + ":"+userName+"|"+age+".");
/*if(cursor!=null&&cursor.moveToFirst()){  
int count = cursor.getCount();
for (int i = 0; i < count; i++) {
String userName = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseHelper.USERNAME));
String age = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseHelper.AGE));
cursor.moveToNext();
//一个个遍历完
Log.i(MainActivity.class.getSimpleName(), i + ":"+userName+"|"+age+".");
}*/
}
})
;

findViewById(R.id.delete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// delete:
String whereClauseString = "username=?";
String[] whereArgsString = {"小明"};
mSqLiteDatabase.delete(DatabaseHelper.USER_TABLE_NAME, whereClauseString, whereArgsString);
}
})
;
// update

ContentValues contentValues = new ContentValues();
contentValues.put(DatabaseHelper.AGE, "100");
String whereClauseString = "username=?";
String[] whereArgsString = {"小明"};
mSqLiteDatabase.update(DatabaseHelper.USER_TABLE_NAME,contentValues, whereClauseString, whereArgsString);
事务
//插入10000條數據

//開始事務 此時db會被鎖定
mSqLiteDatabase.beginTransaction();

try {
//做你的操作
for (int i = 0; i < 1000; i++) {
mSqLiteDatabase.execSQL("insert into user(username,age) values ('liu do ming','5')");
}
mSqLiteDatabase.setTransactionSuccessful();
} catch (Exception e) {
e.printStackTrace()
;
} finally {
mSqLiteDatabase.endTransaction();
}

}
0 0
原创粉丝点击