Android studio

package com.example.jishanzu.jishan;

import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Demo13Activity extends FragmentActivity {

    private Button createDb,addData,selData,updData,delData,delTable;
    private SQLiteDatabase   db;

    private boolean createDb(Context context){
        boolean flag=false;
        if (null == db){
            db = context.openOrCreateDatabase("myDB.db",MODE_PRIVATE,null);
        }
        StringBuilder createTable = new StringBuilder();
        createTable.append("CREATE TABLE  product");
        createTable.append("(");
        createTable.append("p_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT");
        createTable.append(",p_name TEXT NULL");
        createTable.append(",p_price DOUBLE NULL");
        createTable.append(")");
        try {
            Log.i("sql:",createTable.toString());
            db.execSQL(createTable.toString());
            flag=true;
        }catch (SQLException ex){
            Log.e("创建表失败!",ex.getMessage());
        }
        return flag;
    }

    private boolean addData(Context context){
        if (null == db){
            db = context.openOrCreateDatabase("myDB.db",MODE_PRIVATE,null);
        }
        //构造ContentValues,用于存放数据
        ContentValues cv1 = new ContentValues();
        cv1.put("p_name","测试名称1");
        cv1.put("p_price",11.11);

        ContentValues cv2 = new ContentValues();
        cv2.put("p_name","测试名称2");
        cv2.put("p_price",22.22);
        //添加一个不存在的字段,是会报错的,报xxx no column named xxxx
        //cv2.put("p_age",22);
        try {
            //添加操作
            long row1 = db.insert("product",null,cv1);
            long row2 = db.insert("product",null,cv2);

            //判断是否添加成功
            if (row1>0 && row2>0)
                return true;
        }catch (SQLException ex){

        }
        return false;
    }

    //第二种添加方式,直接sql方式
    private boolean addData2(Context context){
        if (null == db){
            db = context.openOrCreateDatabase("myDB.db",MODE_PRIVATE,null);
        }
        String sql="INSERT INTO product(p_name,p_price)VALUES(?,?)";
        //构造数据数组
        Object[] data1 = new Object[]{"测试名称111",111.111};
        Object[] data2 = new Object[]{"测试名称222",222.222};
        //调用execSQL,执行sql并传入占位符数据
        try {
            db.execSQL(sql,data1);
            db.execSQL(sql,data2);
            return true;
        }catch (SQLException ex){

        }
        return false;
    }

    //查询操作
    private Cursor selData(Context context){
        if (null == db){
            db = context.openOrCreateDatabase("myDB.db",MODE_PRIVATE,null);
        }
        //游标对象
        Cursor cursor =null;
        //查询参数
        String table="product";
        //参数要求是数组columns
        String[] columns=new String[]{"p_id","p_name","p_id"};
        //占位符形式
        String selection="p_price>?";
        String[] selectionArgs=new String[]{"22"};
        //执行查询返回游标对象,注意query方法有很多参数,此处记不住可以参考文档或源码
        cursor=db.query(table,columns,selection,selectionArgs,null,null,null);
        return cursor;
    }



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.demo13);
        createDb = (Button)findViewById(R.id.create_db);
        addData = (Button)findViewById(R.id.add_data);
        selData = (Button)findViewById(R.id.sel_data);
        updData = (Button)findViewById(R.id.upd_data);
        delData = (Button)findViewById(R.id.del_data);
        delTable = (Button)findViewById(R.id.del_table);

        //TODO:给每个按钮添加事件
        createDb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (createDb(getApplicationContext())){
                    Toast.makeText(getApplicationContext(),"建库建表成功!",Toast.LENGTH_LONG).show();
                }
            }
        });

        addData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (addData(getApplicationContext())){
                    Toast.makeText(getApplicationContext(),"添加成功",Toast.LENGTH_LONG).show();
                }

                if (addData2(getApplicationContext())){
                    Toast.makeText(getApplicationContext(),"第二种方式添加成功",Toast.LENGTH_LONG).show();
                }
            }
        });
        selData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Cursor cursor=selData(getApplicationContext());
                if (null!=cursor){
                    //一行行提取数据
                    while (cursor.moveToNext()){
                        Integer pId=cursor.getInt(0);
                        String pName =cursor.getString(1);
                        Double pPrice =cursor.getDouble(2);
                        Log.i("查询操作:",pId+","+pName+"+"+pPrice);
                    }
                    //别忘了关闭游标
                    cursor.close();
                }
            }
        });


    }

    @Override
    protected void onDestroy(){
        super.onDestroy();
        if (null != db && db.isOpen()){
            db.close();
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值