Android初试--SQLite数据库的简单介绍

SQLite数据库

一、SQLite数据库简介和基础知识
1.在Android系统中嵌入的关系数据库。
2.SQLite数据库支持SQL语言
MySQL
   1.create  table  表名(列名  数据类型  修饰条件,列名  数据类型  修饰条件......);
   2.insert  into  表名  values(数值......);
   3.update  表名  set  列名=新数值,.....  where  条件;
   4.delete  from  表名  where  条件;
   5.select  (列名.....) from   表名  where  条件;
3.JDBC连接数据的方式在SQLite数据库是无法使用,需要SQLite数据库的访问API.
4.SQLite数据库中的数据不受数据类型的限制。
    create  table  表名(id int );
    insert  into  表名  values('1001');
5.字段的数据长度,该字段仍然可以保存超过指定长度的内容。
      create  table  表名(name varchar(3));
      insert  into  表名  values('1001001');
6.SQLite不支持外键约束(FOREIGN KEY CONSTRAINTS)。
二、在Android中操作SQLite数据库
   1. Android平台上提供了一个名为SQLiteOpenHelper的抽象类。
            SQLiteOpenHelper类提供了两个重要的抽象方法
                onCreate(SQLiteDatabase db)  用于初次使用软件时生成数据库表
                onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 用于升级软件时更新数据库表结构
                方法onOpen(SQLiteDatabase db),它在每次成功打开数据库后首先被执行.
                实例方法
              SQLiteDatabase  getWritableDatabase()方法以读写方式打开数据库
              SQLiteDatabase  getReadableDatabase()方法先以读方式打开数据库
                方法获取用于操作数据库的SQLiteDatabase对象
   2.SQLiteDatabase  ---  用于操作数据库的对象
             第一种操作数据库的方式(适合熟悉SQL语句的人)
             execSQL(String  sql)方法可以执行insert、delete、update和create table之类有更改行为的SQL语句。
             rawQuery(String  sql)方法可以执行select的SQL语句。方法返回Cursor对象,Cursor是结果集游标。  
             第二种操作数据库的方式(适合不熟悉SQL语句的人)
              insert(" ,,,,,,,,");
              delete("   ")
              update("   ")
              query("   ");  方法返回Cursor对象,Cursor是结果集游标。 
   3.Cursor对象
            moveToNext()方法可以将游标从当前行移动到下一行,如果已经移过了结果集的最后一行,返回结果为false,否则为true   
            Cursor.getColunmIndex(String  coloumName);根据列名称得到列的索引值。
             while(Cursor . moveToNext()){
                    Cursor.getInt(int  index);
                    Cursor.getInt(Cursor.getColunmIndex());
               } 
操作SQLite数据库的步骤
1.新建一个类继承SQLiteOpenHelper类,
       并重写onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
2.编写一个子类构造方法,然后在这个构造方法中调用父类的构造方法
        super(context, NAME, null, VERSION);
        //Context 
        //String  NAME---数据库的名称
        //CursorFactory---游标工厂默认为null
        //int  VERSION---数据库的版本号 【整数】
3.在重写的onCreate(SQLiteDatabase db)中执行创建数据库表的SQL语句。

4.使用继承SQLiteOpenHelper类的子类对象,调用 getWritableDatabase()方法/getReadableDatabase()方法,得到SQLiteDatabase的对象。

5.使用上一步得到的SQLiteDatabase的对象,调用增删查改方法来实现对数据库表的数据操作。

第一种操作数据库的方式(适合熟悉SQL语句的人)
             execSQL(String  sql)方法可以执行insert、delete、update和create table之类有更改行为的SQL语句。

             rawQuery(String  sql)方法可以执行select的SQL语句。方法返回Cursor对象,Cursor是结果集游标。  

public class DBSQLiteOpenHelper  extends  SQLiteOpenHelper{
   //Context context----上下文对象
   //String name ---数据库的名称
//CursorFactory factory---游标工厂对象
//int version---数据库版本号
private  static  final  String  NAME="test_db";
private  static  final  int  VERSION=1;
public  DBOpenHelper(Context context){
super(context, NAME, null, VERSION);
}
//用于初次使用软件时生成数据库表
@Override
public void onCreate(SQLiteDatabase database) {
           //准备创建的表的sql数据
String  createTable="create table person(personid integer primary key autoincrement, name varchar(20), age integer);";
    //由SQLiteDatabase对象调用execSQL(String  sql)
database.execSQL(createTable);
}
//用于升级软件时更新数据库表结构
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

}
}

package com.click369.sqlitedemo1;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;


public class MainActivity extends Activity {
private  DBSQLiteOpenHelper  dbSQLiteOpenHelper=null; 
    private   SQLiteDatabase  sqLiteDatabase=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbSQLiteOpenHelper=new DBSQLiteOpenHelper(this);
sqLiteDatabase=dbSQLiteOpenHelper.getWritableDatabase();
}
/**
* 添加数据
*/
public void addStudent(View view) {
Student  student=new Student();
student.setStuname("zhangsan");
student.setStuage(23);
student.setStuaddress("xian");
String  insert="insert  into  Student values(null,'"+student.getStuname()+
      "',"+student.getStuage()+
      ",'"+student.getStuaddress()+"');";
System.out.println(insert);    
sqLiteDatabase.execSQL(insert);
Toast.makeText(this, "添加成功", 6000).show();
}


/**
* 修改数据
*/
public void updateStudent(View view) {
Student  student=new Student();
student.setStuid(1);
student.setStuname("lisi");
student.setStuage(34);
student.setStuaddress("北京");
String  update="update student set stuname='"+student.getStuname()
       +"',stuage="+student.getStuage()+",stuaddress='"+
       student.getStuaddress()+"' where stuid="+student.getStuid()+";";
System.out.println(update);    
sqLiteDatabase.execSQL(update);
Toast.makeText(this, "修改成功", 6000).show();
}
/**
* 查询数据
*/
public void selectStudent(View view) {
String  select="select * from student;";
System.out.println(select);    
Cursor cursor=sqLiteDatabase.rawQuery(select, null);
while(cursor.moveToNext()){
int stuid=cursor.getInt(cursor.getColumnIndex("stuid"));
String stuname=cursor.getString(cursor.getColumnIndex("stuname"));
int stuage=cursor.getInt(cursor.getColumnIndex("stuage"));
String stuaddress=cursor.getString(cursor.getColumnIndex("stuaddress"));
   String info="id="+stuid+",name="+stuname+",age="+stuage+",address="+stuaddress;
   System.out.println(info);
}
cursor.close();
}


/**
* 删除数据
*/
public void deleteStudent(View view) {
String  delete="delete from  student where stuid=1;";
System.out.println(delete);    
sqLiteDatabase.execSQL(delete);
Toast.makeText(this, "删除成功", 6000).show();
}
}
  第二种操作数据库的方式(适合不熟悉SQL语句的人)
              insert(" ,,,,,,,,");
              delete("   ")
              update("   ")
              query("   ");  方法返回Cursor对象,Cursor是结果集游标。
package com.click369.sqlitedemo2;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBOpenHelper extends SQLiteOpenHelper{
private  static  final String  NAME="person_db";
private  static  final int  VERSION=1;
   public  DBOpenHelper(Context context){
  super(context,NAME,null,VERSION);
   }
@Override
public void onCreate(SQLiteDatabase database) {
String create="create table student(stuid integer primary key autoincrement, "+
                "stuname varchar(20), "+
                "stuage integer, "+
                "stuaddress  varchar(20));";
database.execSQL(create);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stu
}
}


package com.click369.sqlitedemo2;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;


public class MainActivity extends Activity {
private  DBOpenHelper  dbOpenHelper=null;
    private  SQLiteDatabase  sqLiteDatabase=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbOpenHelper=new DBOpenHelper(this);
sqLiteDatabase=dbOpenHelper.getWritableDatabase();
}
   public  void  addStudent(View  view){
  Student  student=new Student();
  student.setStuname("zhangsan");
  student.setStuage(23);
  student.setStuaddress("xian");
  ContentValues  values=new ContentValues();
  values.put("stuname",student.getStuname());
  values.put("stuage", student.getStuage());
  values.put("stuaddress", student.getStuaddress());
  long temp=sqLiteDatabase.insert("student", null, values);
  if(temp>0){
  Toast.makeText(this, "添加成功", 6000).show();
  }else{
  Toast.makeText(this, "添加失败", 6000).show();
  }
   }
  public  void  updateStudent(View  view){
  Student  student=new Student();
  student.setStuid(1);
  student.setStuname("lisi");
  student.setStuage(34);
  student.setStuaddress("上海");
  ContentValues  values=new ContentValues();
  values.put("stuname",student.getStuname());
  values.put("stuage", student.getStuage());
  values.put("stuaddress", student.getStuaddress());
  long temp=sqLiteDatabase.update("student", values, "stuid=?", new String[]{String.valueOf(student.getStuid())});
  if(temp>0){
  Toast.makeText(this, "修改成功", 6000).show();
  }else{
  Toast.makeText(this, "修改失败", 6000).show();
  }
   }
  public  void  selectStudent(View  view){
 Cursor cursor=sqLiteDatabase.query("student", null, null, null, null, null, null);
 while(cursor.moveToNext()){
int id= cursor.getInt(cursor.getColumnIndex("stuid"));
String name= cursor.getString(cursor.getColumnIndex("stuname"));
int age= cursor.getInt(cursor.getColumnIndex("stuage"));
String  address= cursor.getString(cursor.getColumnIndex("stuaddress"));
String info="id="+id+",name="+name+",age="+age+",address="+address;
System.out.println(info);
 }
 cursor.close();
  }
  public  void  deleteStudent(View  view){
  long temp=sqLiteDatabase.delete("student", "stuid=?", new String[]{"1"});
  if(temp>0){
  Toast.makeText(this, "删除成功", 6000).show();
  }else{
  Toast.makeText(this, "删除失败", 6000).show();
  }
  }
}
sqlite数据的保存位置  data/data/自己应用程序的包/databases/自己的数据库
 例如:data/data/com.click369.sqlitedemo1/databases/test_db
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值