国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

詳解Android數(shù)據(jù)存儲(chǔ)—使用SQLite數(shù)據(jù)庫(kù)

2019-10-23 18:35:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

SQLite是Android自帶的關(guān)系型數(shù)據(jù)庫(kù),是一個(gè)基于文件的輕量級(jí)數(shù)據(jù)庫(kù)。Android提供了3種操作數(shù)據(jù)的方式,SharedPreference(共享首選項(xiàng))、文件存儲(chǔ)以及SQLite數(shù)據(jù)庫(kù)。

SQLite數(shù)據(jù)庫(kù)文件被保存在/data/data/package_name/databases目錄下。

一、創(chuàng)建和刪除表

1.創(chuàng)建表

創(chuàng)建表的SQL語(yǔ)句為:

CREATE TABLE userInfo_brief (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,password TEXT);

對(duì)應(yīng)的Java代碼為:

  final static int VERSION=1;  final static String TABLENAME="userInfo_brief";  final static String ID="id";  final static String NAME="name";  final static String PASSWORD="password";  String sql="CREATE TABLE "+TABLENAME+"("+"ID"+" INTEGER PRIMARY KEY AUTOINCREMENT,"     +NAME+" TEXT,"// Attention:注意SQL語(yǔ)法,每個(gè)變量后需要有空格,否則不認(rèn)識(shí)。    +PASSWORD+" TEXT,"    +AGE+" TEXT);";    db.execSQL(sql);

2.刪除表

SQL語(yǔ)句為:

DROP TABLE userInfo_brief;

對(duì)應(yīng)的java代碼為:

String sql="DROP TABLE "+TABLENAME+";";db.execSQL(sql);

二、操作數(shù)據(jù)庫(kù)中的記錄

1.插入記錄

insert用法:

SQliteDatabase.insert(String table,String nullColumnHack,ContentValues values)
ContentValues values=new ContentValues();//獲取ContentValues對(duì)象,類似HashMAP      values.put(DatabaseHelper.NAME, name);//鍵值對(duì)形式保存數(shù)據(jù)      values.put(DatabaseHelper.PASSWORD, pass);      values.put(DatabaseHelper.AGE, age);      db.insert(DatabaseHelper.TABLENAME, null, values);

2.更新記錄

update使用方法:

 

復(fù)制代碼 代碼如下:

SQliteDatabase.update(String table,ContentValues values,String where-Clause,String[] WhereArgs)

 

eg:更新表中name為bob的密碼

ContentValues values=new ContentValues();values.put(PASSWORD,"123456");//要更新的數(shù)據(jù)db.update(TABLENAME,values,NAME+"=?",new String[]{"bob"});

3.刪除記錄

delete使用方法:

SQliteDatabase.delete(String table,String where-Clause,String[] WhereArgs)

eg:刪除那么為bob的記錄

db.delete(TABLENAME,NAME+"=?",new String[]{"bob"});

4.查詢記錄

1.單表查詢

使用SQLiteDatabase.query(7個(gè)參數(shù))。

2.多表查詢

如果A表中存了用戶名和密碼,B表中存了用戶名和其他具體信息,使用SQLiteQueryBuilder多表查詢。
SQL語(yǔ)句:

 

復(fù)制代碼 代碼如下:

SELECT A.name,A.password,B.age,B.sex FROM A,B WHERE A.name=B.name AND A.name=“bob”

 

多表查詢步驟:

SQLiteQueryBuilder builder=new SQLiteQueryBuilder();//獲得對(duì)象builder.setTables(TABLENAME_A,TABLENAME_B);//設(shè)置需要查詢的表,可多個(gè)builder.appendWhere(TABLENAME_A+"."+NAME+"="TABLENAME_B+"."+NAME);//設(shè)置關(guān)聯(lián)屬性,表與屬性間.隔開,屬性以=連接cursor=builder.query(7個(gè)屬性);//7屬性同單表查詢

實(shí)例—通過(guò)數(shù)據(jù)庫(kù)驗(yàn)證登錄

1.數(shù)據(jù)庫(kù)設(shè)計(jì)

使用了數(shù)據(jù)庫(kù)幫助類,從寫onCreate方法

public class DatabaseHelper extends SQLiteOpenHelper {  final static String DATABASENAME="my_database.db";  final static int VERSION=1;  final static String TABLENAME="userInfo_detail";  final static String ID="id";  final static String NAME="name";  final static String PASSWORD="password";  final static String AGE="age";  public DatabaseHelper(Context context) {    super(context, DATABASENAME, null, VERSION);    // TODO 自動(dòng)生成的構(gòu)造函數(shù)存根  }  @Override  public void onCreate(SQLiteDatabase db) {    // TODO 自動(dòng)生成的方法存根    String sql="CREATE TABLE "+TABLENAME+"("+"ID"+" INTEGER PRIMARY KEY AUTOINCREMENT,"    +NAME+" TEXT,"    +PASSWORD+" TEXT,"    +AGE+" TEXT);";    db.execSQL(sql);  }  @Override  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    // TODO 自動(dòng)生成的方法存根  }}

2.登錄界面

public class LoginActivity extends Activity {  private EditText username;   private EditText password;   private CheckBox autoLogin;   private SharedPreferences sharedPreferences;   private String message;   SQLiteDatabase db;  @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);    // MyApplication.getInstance().addActivity(this);     sharedPreferences = this.getSharedPreferences("userInfo",Context.MODE_WORLD_READABLE); //sharedPreferences實(shí)例化,用于記住登錄狀態(tài),判斷是否需要自動(dòng)登錄    if (sharedPreferences.getBoolean("AUTO_ISCHECK", false)) { //自動(dòng)登錄      Intent intent = new Intent();       intent.setClass(LoginActivity.this, MainActivity.class);       intent.putExtra("NAME", sharedPreferences.getString("userName", ""));      startActivity(intent);     } else {       setContentView(R.layout.login_main);       initView();      username = (EditText) findViewById(R.id.accountEdittext);      password = (EditText) findViewById(R.id.pwdEdittext);      Button btn_login=(Button) findViewById(R.id.login_in);     Button btn_register=(Button)findViewById(R.id.register);     btn_register.setOnClickListener(new OnClickListener() {//跳轉(zhuǎn)注冊(cè)界面      @Override      public void onClick(View v) {        // TODO 自動(dòng)生成的方法存根        Intent intent=new Intent(LoginActivity.this, RegisterActivity.class);        startActivity(intent);      }    });     btn_login.setOnClickListener(new OnClickListener() { //判斷登錄       @Override       public void onClick(View v) {         // TODO Auto-generated method stub        userLogin();       }     });    }   }   /**    * 初始化視圖控件    */   public void initView() {     Log.i(TAG, "初始化視圖控件");     username = (EditText) findViewById(R.id.accountEdittext);     password = (EditText) findViewById(R.id.pwdEdittext);     autoLogin = (CheckBox) findViewById(R.id.checkBox1);     // 默認(rèn)記住用戶名     username.setText(sharedPreferences.getString("userName", ""));   }   /**    * 點(diǎn)擊登錄按鈕時(shí)觸發(fā)的方法    */   public void userLogin() {     //通過(guò)幫助類獲得數(shù)據(jù)庫(kù)對(duì)象    DatabaseHelper helper=new DatabaseHelper(getBaseContext());    db=helper.getReadableDatabase();    //得到用戶輸入信息    String usernameString = username.getText().toString();     String passwordString = password.getText().toString();     //根據(jù)用戶名查詢數(shù)據(jù)庫(kù)信息    Cursor cursor=db.query(DatabaseHelper.TABLENAME, new String[]{DatabaseHelper.PASSWORD},        DatabaseHelper.NAME+"=?", new String[]{usernameString}, null, null, null);    //若沒有查詢到相關(guān)信息,不再繼續(xù)操作    if(cursor.getCount()==0)    {      Toast.makeText(getBaseContext(), "用戶名不存在", Toast.LENGTH_SHORT).show();      return;    }    //若用戶名存在,則繼續(xù)操作    cursor.moveToFirst(); //指向第一條記錄    String password=cursor.getString(0);//取得密碼    //判斷密碼,若一樣則進(jìn)行跳轉(zhuǎn)    if(password.equals(passwordString)){      if(autoLogin.isChecked()){        Editor editor=sharedPreferences.edit();        editor.putString("userNAME", usernameString);        editor.putBoolean("AUTO_ISCHECK", true);        editor.commit();      }      Intent intent=new Intent(LoginActivity.this, MainActivity.class);      intent.putExtra("NAME",usernameString);      startActivity(intent);    }    else    {//     Editor editor = sharedPreferences.edit(); //      editor.putString("userName", usernameString); //      editor.commit();       Toast.makeText(getBaseContext(), "密碼錯(cuò)誤", Toast.LENGTH_SHORT).show();    }  } }

androidsqlite數(shù)據(jù)庫(kù),android,sqlite數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)存儲(chǔ)

3.注冊(cè)界面

public class RegisterActivity extends Activity {  String name;  String pass;  String age;  SQLiteDatabase db;  @Override  protected void onCreate(Bundle savedInstanceState) {    // TODO 自動(dòng)生成的方法存根    super.onCreate(savedInstanceState);    setContentView(R.layout.register);    final EditText et_userName=(EditText)findViewById(R.id.editText_1);    final EditText et_password=(EditText)findViewById(R.id.editText_2);    final EditText et_age=(EditText)findViewById(R.id.editText_3);    Button btn_confirm=(Button)findViewById(R.id.register_confirm);    btn_confirm.setOnClickListener(new OnClickListener() {      @Override      public void onClick(View v) {        // TODO 自動(dòng)生成的方法存根        name=et_userName.getText().toString();        pass=et_password.getText().toString();        age=et_age.getText().toString();        //得到數(shù)據(jù)庫(kù)對(duì)象        DatabaseHelper helper=new DatabaseHelper(getBaseContext());        db=helper.getWritableDatabase();        //判斷用戶名是否已存在        Cursor cursor=db.query(DatabaseHelper.TABLENAME, new String[]{DatabaseHelper.NAME},            DatabaseHelper.NAME+"=?", new String[]{name}, null, null, null);        //若查詢目標(biāo)已存在        if(cursor.getCount()>0){          Toast.makeText(getBaseContext(), "用戶名已存在", Toast.LENGTH_SHORT).show();          return;        }      //若不存在,則插入數(shù)據(jù)      ContentValues values=new ContentValues();      values.put(DatabaseHelper.NAME, name);      values.put(DatabaseHelper.PASSWORD, pass);      values.put(DatabaseHelper.AGE, age);      db.insert(DatabaseHelper.TABLENAME, null, values);      //進(jìn)行跳轉(zhuǎn)      Intent intent=new Intent(RegisterActivity.this, MainActivity.class);      intent.putExtra("NAME", name);      startActivity(intent);      }    });  }}

androidsqlite數(shù)據(jù)庫(kù),android,sqlite數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)存儲(chǔ)

androidsqlite數(shù)據(jù)庫(kù),android,sqlite數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)存儲(chǔ)

4.登錄成功界面

public class MainActivity extends Activity {  String name;  String pass;  String age;   private Button logout;   SQLiteDatabase db;   private SharedPreferences sharedPreferences;    protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);  //  MyApplication.getInstance().addActivity(this);     setContentView(R.layout.main_activity);    logout=(Button) findViewById(R.id.logout);    doQuery();//進(jìn)行查詢    doShow();//進(jìn)行顯示    logout.setOnClickListener(new OnClickListener() {      @Override      public void onClick(View v) {        // TODO 自動(dòng)生成的方法存根        removeSharedPreference();       Intent intent=new Intent();       intent.setClass(MainActivity.this, LoginActivity.class);       startActivity(intent);      }    });  }  private void doQuery() {    // TODO 自動(dòng)生成的方法存根    name=getIntent().getExtras().getString("NAME");    DatabaseHelper helper=new DatabaseHelper(getBaseContext());    db=helper.getReadableDatabase();    //準(zhǔn)備查詢de屬性    String[] columns=new String[]{DatabaseHelper.PASSWORD,DatabaseHelper.AGE};    Cursor cursor=db.query(DatabaseHelper.TABLENAME, columns, DatabaseHelper.NAME+"=?",         new String[]{name}, null, null, null);    cursor.moveToFirst();    while(!cursor.isAfterLast()){//判斷是否是最后一條記錄      pass=cursor.getString(0);       age=cursor.getString(1);      cursor.moveToNext();    }  }  private void doShow() {    // TODO 自動(dòng)生成的方法存根    TextView tv_show=(TextView)findViewById(R.id.show1);    tv_show.setText("用戶信息如下:/n"+"賬戶:"+name+"/n密碼"+pass+"/n年齡"+age);  }  public void removeSharedPreference() {    sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE);    Editor editor = sharedPreferences.edit();    //editor.remove("userName");    editor.remove("AUTO_ISCHECK");    editor.commit();// 提交修改    }}

androidsqlite數(shù)據(jù)庫(kù),android,sqlite數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)存儲(chǔ)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉荫县| 登封市| 琼海市| 吕梁市| 武定县| 特克斯县| 车致| 利辛县| 瑞安市| 建昌县| 祁连县| 盐城市| 黎川县| 霍林郭勒市| 莱阳市| 精河县| 娱乐| 建瓯市| 舟山市| 庐江县| 建宁县| 澎湖县| 富民县| 北票市| 武穴市| 陆河县| 清原| 东宁县| 休宁县| 东安县| 屏东县| 京山县| 涪陵区| 铜梁县| 富裕县| 呼伦贝尔市| 秦皇岛市| 镇赉县| 汉中市| 土默特左旗| 新蔡县|