小言_互联网的博客

SQLite的基本语法

386人阅读  评论(0)

Activity代码

package com.example.day1014_job;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button add_button;
    private Button remove_button;
    private Button refresh_button;
    private Button update_button;
    private String sql;
    private SQLiteDatabase db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        MySqlHelp mySqlHelp = new MySqlHelp(this, "user.db", null, 1);
        // 可读可写(如果数据库存在就打开 不存在就创建), 内存不足 重新尝试打开
        db = mySqlHelp.getReadableDatabase();
        // 可读可写(如果 数据库存在打开 不存在创建),直接报错
        // mySqlHelp.getWritableDatabase();

    }

    private void initView() {
        add_button = (Button) findViewById(R.id.add_button);
        remove_button = (Button) findViewById(R.id.remove_button);
        refresh_button = (Button) findViewById(R.id.refresh_button);
        update_button = (Button) findViewById(R.id.update_button);

        add_button.setOnClickListener(this);
        remove_button.setOnClickListener(this);
        refresh_button.setOnClickListener(this);
        update_button.setOnClickListener(this);
    }

    /**
     * 操作数据的 两种 方式: 原生/方法
     * @param v
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.add_button: // 添加
                // 原生
//                sql = "insert into user values(?,?,?)";
//                db.execSQL(sql,new Object[]{null,"恶魔","大魔头"});
                // 方法
                ContentValues contentValues = new ContentValues();
                contentValues.put("sex","妖怪");
                contentValues.put("name","总钻风");
                db.insert("user",null,contentValues);
                break;
            case R.id.remove_button: // 删除
                // 原生
//                sql ="delete from user where sex = ? ";
//                db.execSQL(sql,new Object[]{"恶魔"});
                // 方法
                db.delete("user","sex=?",new String[]{"妖怪"});
                break;
            case R.id.refresh_button: // 查询
                // 原生
//                sql = "select * from user";
//                Cursor cursor = db.rawQuery(sql, new String[]{});
//                if(cursor != null){
//                    while (cursor.moveToNext()){
//                        int id = cursor.getInt(cursor.getColumnIndex("id")); // 获取id
//                        String sex = cursor.getString(cursor.getColumnIndex("sex"));//获取性别
//                        String name = cursor.getString(cursor.getColumnIndex("name"));// 获取姓名
//                        Log.d("---", "refres-查询: -"+id+"-"+sex+"-"+name);
//                    }
//                }
                //方法
                Cursor cursor = db.query("user", null, null, null, null, null, null);
                // 获取 cursor 内的数据
                if (cursor != null){
                    while (cursor.moveToNext()){
                        int id = cursor.getInt(cursor.getColumnIndex("id"));
                        String sex = cursor.getString(cursor.getColumnIndex("sex"));
                        String name = cursor.getString(cursor.getColumnIndex("name"));
                        Log.d("---", "regres-方法查询: "+id+"-"+sex+"-"+name);
                    }
                }

                break;
            case R.id.update_button: // 更新
                //原生
//                sql = "update user set name = ? where sex = ?";
////                db.execSQL(sql,new Object[]{"小钻风","恶魔"});
                //方法
                ContentValues contentValues1 = new ContentValues();
                contentValues1.put("sex","仙人");
                contentValues1.put("name","悟空");
                db.update("user",contentValues1,"sex=?",new String[]{"妖怪"});
                break;
        }
    }
}

MySqlHelp代码

package com.example.day1014_job;

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

public class MySqlHelp extends SQLiteOpenHelper {

    /**
     *
     * @param context
     * @param name
     * @param factory
     * @param version
     */
    public MySqlHelp(Context context,String name,SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);

    }
    //用户数据库中的表的创建

    /**
     * primary(主要的) key  主键
     * autoincrement  自动 增量
     * 只会执行一次
     * @param db // 用于操作数据库 增删改
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建表  设置id 为主键自增
        db.execSQL("create table user (id integer primary key autoincrement,sex varchar(20),name varchar(20))");
    }

    /**
     * 多次多用
     * 数据库更新 当前版本更新的时候 调用
     * @param db
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

创建时事务添加数据

package com.example.day1014_topic9.sql;

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

public class MySqlHelp extends SQLiteOpenHelper {
    /**
     *
     * @param context 上下文
     * @param name 数据库名称
     * @param factory null 工厂
     * @param version 数据库版本
     */
    public MySqlHelp(Context context,String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
    // 用户数据库中的表的创建

    /**     *
     * //  只会执行一次
     * @param db // 用于操作数据库 增删改查
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table user (id integer primary key autoincrement,name varcher(20))");
        db.beginTransaction(); // 开启事务
        try {
            for (int i = 0; i < 100; i++) {
                db.execSQL("insert into user  values (null,'大魔头')");
            }
            db.setTransactionSuccessful(); // 成功
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            db.endTransaction();// 结束事务

        }
    }

    /**
     * // 可以被多次调用
     * 数据库更新 当版本跟新的时候 调用
     * @param db
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

转载:https://blog.csdn.net/TheDevil_/article/details/102556781
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场