zoukankan      html  css  js  c++  java
  • 安卓SQLite数据库操作(上)

    安卓系统自带数据库,名为SQLite。这篇文章我们用一个Demo来讲解安卓操作数据库的例子。

    By the way,

    安卓创建的数据库文件存放在/data/data/<包名>/database 下,后缀名一般为xxx.db

    看到数据库文件,我们一般使用一款名为 SQLite Expert 的可视化工具来查看。

    下面我们通过一个简单的例子来,创建一个数据,数据库里面创建一个表格。

    注意,虽然我们在安卓开发中有包装好的api可以使用,但是sql语句我们最好还是掌握比较好。

    先看图吧。

    如图所示,下面是用 SQLite Expert打开后的界面,运行app后,点击按钮就会创建一个名为people的数据库,数据库下有一个Girl的表。(如果没有创建表,数据下面也有一个表,那个是系统自动生成的表,但我们不用理会。)

    然后看代码

    布局文件 activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical"
        tools:context="com.example.db.MainActivity" >
    
        <Button
            android:onClick="Create_Datebase"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Create Datebase" />
    
    </LinearLayout>

    java文件

    MainActivity.java

    package com.example.db;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    
    
    public class MainActivity extends Activity {
        
        private mySQLite myDatebaseHelper;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            myDatebaseHelper = new mySQLite(this, "people.db", null, 1);
         
        }
        
        public void Create_Datebase(View v){
    
            /*
             * 如果数据库没有被创建,就创建并获取一个可写(其实也可以读)的数据库 如果数据库被创建,就直接获取一个可写(其实也可以读)的数据库
             * 路径data/data/database/people.db
             */
            myDatebaseHelper.getWritableDatabase();
            
        }
    
    }

    mySQLite.java

    package com.example.db;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.widget.Toast;
    
    //创建SQLLite需要继承SQLiteOpenHelper类抽象类
    public class mySQLite extends SQLiteOpenHelper{
        
        public static final String CREATE_GIRL = "create table Gril(_id integer primary key autoincrement,Name char(20),Age integer,Phone char(20))" ;
        private Context mContext;
    
        /*
         * 构造方法参数说明
         * 第一个:传入上下文对象
         * 第二个:要创建的数据库名字
         * 第三个:油标工厂,传入油标对象,其实就是一个指针的功能。和ResultSet功能差不多,这个参数一般传入null
         * 第四个:数据库版本号,用于升级的时候调用。版本号必须大于1
         * 构造方法四个参数传入其实是给父类调用的。
         * */
        public mySQLite(Context context, String name, CursorFactory factory,
                int version) {
            super(context, name, factory, version);
            // TODO Auto-generated constructor stub
            mContext = context;
        }
    
        //数据库被创建的时候会调用这个方法
        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            /*db.execSQL(CREATE_BOOK);
            Toast.makeText(mContext,"Create Successded",0).show();*/
            db.execSQL(CREATE_GIRL);
            Toast.makeText(mContext,"Create Successded",0).show();
        }
        //数据库升级的时候调用
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
            
        }
    
    }
  • 相关阅读:
    【JAVAWEB学习笔记】网上商城实战3:购物模块和订单模块
    JAVAEE学习——hibernate01:简介、搭建、配置文件详解、API详解和CRM练习:保存客户
    【JAVAWEB学习笔记】网上商城实战2:异步加载分类、Redis缓存分类和显示商品
    征稿延期 | 2019亚洲语言处理国际大会(IALP2019)征稿延期
    征稿通知 | 2019亚洲语言处理国际大会(IALP2019)开始征稿
    ECNU·AntNLP主页船新上线!
    [NAACL19]无监督循环神经网络文法 (URNNG)
    [ICLR18]联合句法和词汇学习的神经语言模型
    [NAACL19]一个更好更快更强的序列标注成分句法分析器
    [EMNLP18]用序列标注来进行成分句法分析
  • 原文地址:https://www.cnblogs.com/linfenghp/p/5406571.html
Copyright © 2011-2022 走看看