您的位置:首页 > 数据库

SQlite数据库简介&介绍以及使用API调用

2017-01-05 16:41 591 查看
打开虚拟机的数据库

1.xml文件

<Button
android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="OnCreat"
        android:text="@string/creat" />
    <Button
android:id="@+id/btn_insert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="@string/insertdata" />
    <Button
android:id="@+id/btn_updata"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="@string/updata" />
    <Button
android:id="@+id/btn_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="@string/delete" />
    <Button
android:id="@+id/btn_insertApi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="@string/apiinsert" />
    <Button
android:id="@+id/btn_updataApi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="Api修改数据" />
    <Button
android:id="@+id/btn_deleteApi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="Api删除数据" />
</LinearLayout>


2,主Activity

public class MainActivity extends AppCompatActivity {
private MySqliteHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper = DbManager.getIntance(this); //获取了数据库帮助类的对象
}
//点击创建按钮,创建数据库
public void OnCreat(View view){
/**
         * getReadableDatabase
         * getWritableDatabase
         * 创建或打开数据库
* 如果使用时没有发现数据库就创建数据库,如果发现则打开数据库
* 默认情况下两个都表示创建或打开可读可写的数据库对象
* 如果出现磁盘已满或数据库权限的情况下getReadableDatabase打开的是只读数据库
*
         */
SQLiteDatabase db = helper.getWritableDatabase();
}
public void click(View view){
switch (view.getId()){
case R.id.btn_insert:
SQLiteDatabase db =helper.getWritableDatabase();
String sql = "insert into "+ Constant.TABLENAME+" values(1,'zhangshan',20)";
//双引号里面不能再用双引号,要用单引号
DbManager.execSQL(db,sql);
String sql2 = "insert into "+ Constant.TABLENAME+" values(2,'lisi',20)";
DbManager.execSQL(db,sql2);
db.close(); //防止数据库使用资源的占用
break;
case R.id.btn_updata:
db = helper.getWritableDatabase();
String sql3 = "updata person set name = 'xiaoming' where _id=1";
DbManager.execSQL(db,sql3);
db.close();
break;
case R.id.btn_delete:
db = helper.getWritableDatabase();
String deletedatabase = "delete from person where _id=1";
DbManager.execSQL(db,deletedatabase);
db.close();
break;
}
    }
public void onClick(View view){
switch (view.getId()){
case R.id.btn_insertApi:
SQLiteDatabase db = helper.getWritableDatabase();
/**
                 * table 插入数据库的名称
* String nullColumnHack SQLite规定不能插入全是空的一条数据
* ContentValues values 键为String类型的hashmap集合
* 返回值long 表示插入数据的列数
*/
ContentValues values =new ContentValues();
values.put(Constant._ID,3);
values.put(Constant.NAME,"xiaoming");
values.put(Constant.AGE,12);
long result =db.insert(Constant.TABLENAME,null,values);
if (result>0){
Toast.makeText(MainActivity.this,"插入数据成功",Toast.LENGTH_SHORT);
}else {
Toast.makeText(MainActivity.this,"插入数据失败",Toast.LENGTH_SHORT);
}
db.close();
break;
case R.id.btn_updataApi:
db=helper.getWritableDatabase();
/**
                 * ContentValues values 键为String类型的hashmap集合
* String whereClause  修改的条件
* String[] whereArgs  修改条件的占位符
*/
ContentValues cv = new ContentValues();
cv.put(Constant.NAME,"sl");//put(需要修改的字段名称,修改后的字段值)
int count = db.update(Constant.TABLENAME, cv,"_id=3",null);
//                int count = db.update(Constant.TABLENAME, cv,"_id=?",new String[]{"3"});  与上面的效果完全一样
if (count>0){
Toast.makeText(MainActivity.this,"修改数据成功",Toast.LENGTH_SHORT);
}else {
Toast.makeText(MainActivity.this,"修改数据失败",Toast.LENGTH_SHORT);
}
db.close();
break;
case R.id.btn_deleteApi:
db = helper.getWritableDatabase();
/**
                 * String table, String whereClause, String[] whereArgs
                 */
int  deleteresult=db.delete(Constant.TABLENAME,"_id=3",null);
if (deleteresult>0){
Toast.makeText(MainActivity.this,"删除数据成功",Toast.LENGTH_SHORT);
}else {
Toast.makeText(MainActivity.this,"删除数据失败",Toast.LENGTH_SHORT);
}
db.close();
}
    }

3,实例化一些常数

public class Constant {
public static final String DATABASENAME="info.db"; //数据库名称
public static final int DATABASE_VERSION = 1; //数据库版本号
public static final String TABLENAME = "person";  //表名
public static final String NAME = "name";
public static final String AGE = "age";
public static final String _ID = "_id";
}

4,对数据库操作的常用类

/**
 * 对数据库操作的工具类
* Created by sky on 2017/1/5.
 */
public class DbManager {
private static MySqliteHelper helper; //构建一个帮助类的对象
//相应类的获取方式
//开发模式中的单例模式
public static MySqliteHelper getIntance(Context context) {
if (helper == null){
helper =new MySqliteHelper(context);
}
return helper;
}
/**
     * 根据SQL语句在数据库中执行语句
* 可以执行除查询外的所有语句
* @param db 数据库对象
* @param sql SQL语句
*/
public static void execSQL(SQLiteDatabase db,String sql){
if (db !=null){
if (sql!=null && !"".equals(sql)){
db.execSQL(sql);
}
        }
    }
}

5,打开或创建数据库的类

/**
 * Created by sky on 2017/1/5.
 * sqliteopenhelper
 * 1。提供了OnceatOnupgrade()等创建数据库更新数据库的方法
* 2.提供了获取数据库对象的函数
*/
public class MySqliteHelper extends SQLiteOpenHelper {
/**
     * 构造函数
* @param context
     * @param name 表示创建数据库的名称
* @param factory 游标工厂
* @param version 当前数据库的版本  >=1
     */
public MySqliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
public MySqliteHelper (Context context){
super(context,Constant.DATABASENAME,null,Constant.DATABASE_VERSION);
}
/**
     *
     * 当数据库创建时回d调的函数
* @param db 数据库对象
*/
    @Override
public void onCreate(SQLiteDatabase db) {
/**
         * 创建表的语句
*/
//String sql = "creat table person(_id Integer primary key ,name varchar(10),age Integer)";
String sql = "creat table"+Constant.TABLENAME+"("+Constant._ID+"Integer primary key,"
+Constant.NAME+"varchar(10),"+Constant.AGE
+" Integer)";
/**
         * 执行SQ语句
*/
db.execSQL(sql);
Log.i("tag","<<<<<<<<OnCreat>>>>>>>");
}
/**
     * 当数据库有版本更新时回调的函数
* @param db
     * @param oldVersion  数据库旧版本
* @param newVersion  数据库新版本
*/
    @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
/**
     * 当数据库打开时回调的函数
* @param db
     */
    @Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
Log.i("tag","<<<<<<<<OnOpen>>>>>>>");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库
相关文章推荐