@H_502_0@sqlite数据库文件被保存在/data/data/package_name/databases目录下。@H_502_0@一、创建和删除表@H_502_0@1.创建表@H_502_0@创建表的SQL语句为:
CREATE table userInfo_brIEf (ID INTEGER PRIMARY KEY autoINCREMENT,name TEXT,password TEXT);@H_502_0@对应的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语法,每个变量后需要有空格,否则不认识。 +PASSWORD+" TEXT," +AGE+" TEXT);"; db.execsql(sql);@H_502_0@2.删除表@H_502_0@SQL语句为:
DROP table userInfo_brIEf;@H_502_0@对应的java代码为:
String sql="DROP table "+tablename+";";db.execsql(sql);@H_502_0@二、 *** 作数据库中的记录@H_502_0@1.插入记录@H_502_0@insert用法:
sqliteDatabase.insert(String table,String nullColumnHack,ContentValues values)
ContentValues values=new ContentValues();//获取ContentValues对象,类似HashMAP values.put(DatabaseHelper.name,name);//键值对形式保存数据 values.put(DatabaseHelper.PASSWORD,pass); values.put(DatabaseHelper.AGE,age); db.insert(DatabaseHelper.tablename,null,values);@H_502_0@2.更新记录@H_502_0@update使用方法:@H_502_0@复制代码 代码如下:
sqliteDatabase.update(String table,ContentValues values,String where-Clause,String[] WhereArgs)
@H_502_0@eg:更新表中name为bob的密码
ContentValues values=new ContentValues();values.put(PASSWORD,"123456");//要更新的数据db.update(tablename,values,name+"=?",new String[]{"bob"});@H_502_0@3.删除记录@H_502_0@delete使用方法:
sqliteDatabase.delete(String table,String[] WhereArgs)@H_502_0@eg:删除那么为bob的记录
db.delete(tablename,new String[]{"bob"});@H_502_0@4.查询记录@H_502_0@1.单表查询@H_502_0@使用sqliteDatabase.query(7个参数)。@H_502_0@2.多表查询@H_502_0@如果A表中存了用户名和密码,B表中存了用户名和其他具体信息,使用sqlitequeryBuilder多表查询。
SQL语句:@H_502_0@复制代码 代码如下:
SELECT A.name,A.password,B.age,B.sex FROM A,B WHERE A.name=B.name AND A.name=“bob”
@H_502_0@多表查询步骤:
sqlitequeryBuilder builder=new sqlitequeryBuilder();//获得对象builder.settables(tablename_A,tablename_B);//设置需要查询的表,可多个builder.appenDWhere(tablename_A+"."+name+"="tablename_B+"."+name);//设置关联属性,表与属性间.隔开,属性以=连接cursor=builder.query(7个属性);//7属性同单表查询@H_502_0@实例―通过数据库验证登录@H_502_0@1.数据库设计@H_502_0@使用了数据库帮助类,从写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,VERSION); // Todo 自动生成的构造函数存根 } @OverrIDe public voID onCreate(sqliteDatabase db) { // Todo 自动生成的方法存根 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 自动生成的方法存根 }}@H_502_0@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实例化,用于记住登录状态,判断是否需要自动登录 if (sharedPreferences.getBoolean("auto_ISCHECK",false)) { //自动登录 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() {//跳转注册界面 @OverrIDe public voID onClick(VIEw v) { // Todo 自动生成的方法存根 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); // 默认记住用户名 username.setText(sharedPreferences.getString("username","")); } /** * 点击登录按钮时触发的方法 */ public voID userLogin() { //通过帮助类获得数据库对象 DatabaseHelper helper=new DatabaseHelper(getBaseContext()); db=helper.getReadableDatabase(); //得到用户输入信息 String usernameString = username.getText().toString(); String passwordString = password.getText().toString(); //根据用户名查询数据库信息 Cursor cursor=db.query(DatabaseHelper.tablename,new String[]{DatabaseHelper.PASSWORD},DatabaseHelper.name+"=?",new String[]{usernameString},null); //若没有查询到相关信息,不再继续 *** 作 if(cursor.getCount()==0) { Toast.makeText(getBaseContext(),"用户名不存在",Toast.LENGTH_SHORT).show(); return; } //若用户名存在,则继续 *** 作 cursor.movetoFirst(); //指向第一条记录 String password=cursor.getString(0);//取得密码 //判断密码,若一样则进行跳转 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(),"密码错误",Toast.LENGTH_SHORT).show(); } } }@H_502_0@@H_502_0@3.注册界面
public class Registeractivity extends Activity { String name; String pass; String age; sqliteDatabase db; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { // Todo 自动生成的方法存根 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 自动生成的方法存根 name=et_username.getText().toString(); pass=et_password.getText().toString(); age=et_age.getText().toString(); //得到数据库对象 DatabaseHelper helper=new DatabaseHelper(getBaseContext()); db=helper.getWritableDatabase(); //判断用户名是否已存在 Cursor cursor=db.query(DatabaseHelper.tablename,new String[]{DatabaseHelper.name},new String[]{name},null); //若查询目标已存在 if(cursor.getCount()>0){ Toast.makeText(getBaseContext(),"用户名已存在",Toast.LENGTH_SHORT).show(); return; } //若不存在,则插入数据 ContentValues values=new ContentValues(); values.put(DatabaseHelper.name,name); values.put(DatabaseHelper.PASSWORD,values); //进行跳转 Intent intent=new Intent(Registeractivity.this,name); startActivity(intent); } }); }}@H_502_0@
@H_502_0@@H_502_0@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();//进行查询 doShow();//进行显示 logout.setonClickListener(new OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // Todo 自动生成的方法存根 removeSharedPreference(); Intent intent=new Intent(); intent.setClass(MainActivity.this,LoginActivity.class); startActivity(intent); } }); } private voID doquery() { // Todo 自动生成的方法存根 name=getIntent().getExtras().getString("name"); DatabaseHelper helper=new DatabaseHelper(getBaseContext()); db=helper.getReadableDatabase(); //准备查询de属性 String[] columns=new String[]{DatabaseHelper.PASSWORD,DatabaseHelper.AGE}; Cursor cursor=db.query(DatabaseHelper.tablename,columns,null); cursor.movetoFirst(); while(!cursor.isAfterLast()){//判断是否是最后一条记录 pass=cursor.getString(0); age=cursor.getString(1); cursor.movetoNext(); } } private voID doShow() { // Todo 自动生成的方法存根 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();// 提交修改 }}@H_502_0@
@H_502_0@以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 总结
以上是内存溢出为你收集整理的详解Android数据存储―使用SQLite数据库全部内容,希望文章能够帮你解决详解Android数据存储―使用SQLite数据库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)