zoukankan      html  css  js  c++  java
  • App(4.20)

    今天的计划是学习四大组件的广播,但是感觉和我们要做的这个项目关系不大。

    研究了安卓的数据库,自带Sqlite,但是查看数据库的数据好麻烦,准备明天看看安卓中如何使用mysql数据库

    Sqlite数据库的使用

    保存常量值、

    Constants.java

    public class Constants {
        //数据库名称是常量
        //变量名大写 ctrl+shift u
        public static final String DATABASE_NAME="testdb";
        public static final int VERSION_CODE=3;
        public static final String TABLE_NAME="employee";
    }

    与创建数据库有关,其中要注意app的版本号,算是一种标识吧

    需要掌握如何连接SQlite数据库(具体的构造方法),理解SQlite数据库的创建和回调的使用

    public class DatabaseHelper extends SQLiteOpenHelper {
        private static final String TAG="DatabaseHelper";
        //上下文,数据库名称,游标工厂,版本号
        public DatabaseHelper(@Nullable Context context) {
            super(context, Constants.DATABASE_NAME, null, Constants.VERSION_CODE);
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            //创建时的回调
            //第一次创建被调用
            Log.d(TAG,"创建数据库...");
            //创建字段
            //create table table_name(_id integer,name varchar,age Integer,salary integer)
            //注意空格,生成正确的sql语句
            String sql="create table " +Constants.TABLE_NAME+" (_id integer,name varchar,age Integer,salary integer)";
            db.execSQL(sql);
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            //升级数据库时的回调
            //是否升级和数据库版本号有关
            Log.d(TAG,"升级数据库...");
            //添加字段
            //需要改变版本
            String sql;
            //db.execSQL(sql);
    
            switch (oldVersion) {
                case 1:
                    //添加两个字段
                    sql = "alter table " + Constants.TABLE_NAME + " add phone integer,address varchar ";
                    db.execSQL(sql);
                    break;
                case 2:
                    //添加address
                    sql = "alter table " + Constants.TABLE_NAME + " add address varchar";
                    db.execSQL(sql);
                    break;
                case 3:
                    sql = "alter table " + Constants.TABLE_NAME + " add phone integer";
                    db.execSQL(sql);
                    break;
            }
        }
    }

    操作表中的数据Dao.java

    需要掌握一些操作数据库的API

    public class Dao {
        private final DatabaseHelper mHelper;
        private static final String TAG="Dao";
    
        public Dao(Context con) {
            mHelper = new DatabaseHelper(con);
        }
    
        public void insert() {
            SQLiteDatabase db=mHelper.getWritableDatabase();
         /*   String sql="insert into "+Constants.TABLE_NAME+" (_id,name,age,salary,phone,address) values (?,?,?,?,?,?)";
            db.execSQL(sql,new Object[]{1,"Bill",60,100,110,"USA"});*/
            //利用api
            ContentValues values=new ContentValues();
            values.put("_id",2);
            values.put("name","piggo");
            values.put("age",50);
            values.put("salary" ,1);
            values.put("phone",1290);
            values.put("address","USA");
    
            db.insert(Constants.TABLE_NAME,null,values);
            db.close();
        }
    
        public void delete() {
    
            SQLiteDatabase db=mHelper.getWritableDatabase();
           /* String sql="delete from "+Constants.TABLE_NAME+" where age = 100";
            db.execSQL(sql);*/
          int result= db.delete(Constants.TABLE_NAME,null,null);
          Log.d(TAG,"-------"+result);
            db.close();
        }
    
        public void update() {
            SQLiteDatabase db=mHelper.getWritableDatabase();
          /*  String sql="update  "+Constants.TABLE_NAME+" set  salary = 2 where age = 100";
            db.execSQL(sql);*/
            ContentValues values=new ContentValues();
            //放入要修改的数
            values.put("phone",122456);
            //修改所有的
            db.update(Constants.TABLE_NAME,values,null,null);
            db.close();
        }
    
        public void query() {
            SQLiteDatabase db=mHelper.getWritableDatabase();
         /*   String sql="select *from "+Constants.TABLE_NAME;
            //游标
            Cursor cusor=db.rawQuery(sql,null);
            //遍历
            while(cusor.moveToNext())
            {
                int index=cusor.getColumnIndex("name");
                String name=cusor.getString(index);
                Log.d(TAG,"name==="+name);
            }
            cusor.close();*/
         //
            Cursor cusor=db.query(Constants.TABLE_NAME,null,null,null,null,null,null);
            while(cusor.moveToNext())
            {
                int id=cusor.getInt(0);
               String name=cusor.getString(1);
               Log.d(TAG,"id==="+id+name);
    
            }
    
            cusor.close();
            db.close();
        }
    
    }

    MainActivity

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //创建数据库
            DatabaseHelper helper=new DatabaseHelper(this);
            helper.getWritableDatabase();
        }
    }
  • 相关阅读:
    【转载】中文分词整理
    【转载】浅谈事件冒泡与事件捕获
    【转载】SpringCloud-Eurek 心跳阈值说明
    【转载】Linux下查看CPU、内存占用率
    Linux内存、性能诊断中vmstat命令的详解
    【转载】springboot四 全局异常处理
    【转载】linux系统时间自动同步:ntp
    springboot整合三 共享session,集成springsession
    git把一个分支上的某个提交合并到另一个分支
    VS Code打开新的文件会覆盖窗口中的,怎么改
  • 原文地址:https://www.cnblogs.com/ywqtro/p/12741029.html
Copyright © 2011-2022 走看看