安卓数据库的基本操作

Posted storm47

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓数据库的基本操作相关的知识,希望对你有一定的参考价值。

package com.hanqi.cunchu;

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

public class shujuku extends AppCompatActivity {
    EditText name,id,sex,age;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.shujuku);
        id=(EditText)findViewById(R.id.i1);
        name=(EditText)findViewById(R.id.i2);
        sex=(EditText)findViewById(R.id.i3);
        age=(EditText)findViewById(R.id.i4);
    }
    //初始化数据库
    public  void  b1(View view){
        //使用工具类得到数据库对象
        //test表名
        mdb mdb = new mdb("test",1);

        //得到连接
        SQLiteDatabase sqLiteDatabase= mdb.getWritableDatabase();

        //关闭连接
        sqLiteDatabase.close();
    }
    public  void  b2(View view){
        //使用工具类得到数据库对象
        mdb mdb = new mdb("test",2);

        //得到连接
        SQLiteDatabase sqLiteDatabase= mdb.getWritableDatabase();

        //关闭连接
        sqLiteDatabase.close();
    }

    public  void  b3(View view){
        //连接数据库,得到数据库连接对象
        //注意版本号
        SQLiteDatabase sqLiteDatabase=new mdb("test",2).getWritableDatabase();

        //得到数据
        ContentValues cv=new ContentValues();
        cv.put("_id", id.getText().toString());
        cv.put("name",name.getText().toString());
        cv.put("sex", sex.getText().toString());
        cv.put("age",age.getText().toString());

        //调用 insert(),插入数据
        //添加表名。不是文件名
        long l=sqLiteDatabase.insert("NewTable",null,cv);
        Toast.makeText(shujuku.this, "增加的数据条数"+l, Toast.LENGTH_SHORT).show();

        //关闭连接
        sqLiteDatabase.close();
    }
    public  void  b4(View view){
        //连接数据库,得到数据库连接对象

        SQLiteDatabase sqLiteDatabase=new mdb("test",2).getWritableDatabase();

        //搜索全表字段,null代表搜索条件
       Cursor c= sqLiteDatabase.query("NewTable", null, null, null, null, null, null);

        //遍历结果
        while (c.moveToNext()){
            //读取数据
            //getstring(表中的排列顺序,从0开始,类似索引)
            String st=c.getLong(c.getColumnIndex("_id"))+"name="+c.getString(1)+"sex="+c.getString(2)
                    +"age="+c.getString(3);
            String st2=c.getLong(c.getColumnIndex("_id"))+"name="+c.getString(0);
            Log.e("tag",st);
            Log.e("tag",st2);
        }

        //关闭连接
        sqLiteDatabase.close();
        c.close();

    }
    //内部类
    class  mdb extends SQLiteOpenHelper{
        //(要创建的文件名,版本号)
        public  mdb(String dbname,int ver){

            //显示调用父类的构造方法
            //必须在第一行
            //(content,数据库名,默认值,版本号)
            super(shujuku.this,dbname,null,ver);

        }

        //创建初始化数据库
        @Override
        public void onCreate(SQLiteDatabase db) {
            //1.执行创建数据的语句
            String sql="CREATE TABLE  \"main\".\"NewTable\" (\"_id\"  INTEGER NOT NULL," +
                    "\"name\"  varchar(20),\"sex\"  char(1)," +
                    "\"age\"  INTEGER,PRIMARY KEY (\"_id\")\n" +
                    ")\n" +
                    ";";

            //void execSQL(sql语句);
            //通常是建表,修改或删除表等语句
            db.execSQL(sql);
            Log.e("tag","创建完成");

            //2.执行初始化数据的语句,insert语句
            // ContentValues 放入值的方法

            ContentValues cv=new ContentValues();
            cv.put("name","张三");
            cv.put("sex","男");
            cv.put("age",15);

            //执行插入
            //表名,字段的缺省值,要插入的值
           long l= db.insert("NewTable",null,cv);

            //l返回新插入数据的主键值_id
            //失败返回-1
            Log.e("tag","初始化数据"+l);

        }

        //升级数据库
        //触发条件,当版本号增大
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            //修改数据
            if(newVersion==2){
               ContentValues cv=new ContentValues();
                cv.put("name","李四");

                //String sql="update NewTable set name=‘李四‘ where _id=1";
               // db.execSQL(sql);

                String s[]={"1","18"};

                //调用db的更新方法
                //"表名",contentValues,带占位符?的where条件,String[]匹配?的条件值的数组
               int i= db.update("NewTable",cv,"_id=? and age <?",s);

                //i返回改变的数据条数
                //失败返回-1
                Log.e("tag", "升级数据 数据条数=" + i);
            }
        }
    }
}

 

以上是关于安卓数据库的基本操作的主要内容,如果未能解决你的问题,请参考以下文章

安卓。片段 getActivity() 有时返回 null

安卓。通过从片段中的按钮调用片段中的方法来关闭片段?

如何在另一个片段中使用 YouTubePlayerFragment 加载 YouTubePlayer? (安卓)

安卓数据绑定。按钮 onClick 不起作用

谷歌地图在安卓设备上显示为灰色

安卓片段。在屏幕旋转或配置更改期间保留 AsyncTask