SQLite数据库编程
发布时间:2020-12-12 19:31:50 所属栏目:百科 来源:网络整理
导读:在安卓中,使用比较多并且比较重要的数据库编程就是SQLite数据库了。SQLite数据库类似与MySqL数据库编程,底层也是SQL语言实现。 首先,SQLite存储有两种方式实现,一种是完全使用SQL语句来实现数据的增删改查操作,一种是使用谷歌官方提供的API来进行增删改
在安卓中,使用比较多并且比较重要的数据库编程就是SQLite数据库了。SQLite数据库类似与MySqL数据库编程,底层也是SQL语言实现。 使用SQL语句实现数据库操作一、新建一个类继续自SQLiteOpenHelper public class MySqlitehelper extends SQLiteOpenHelper {
public MySqlitehelper(Context context) {
super(context,"contactinfo1.db",null,2);
//null 表示使用默认游标工厂
}
@Override//数据库第一次创建时调用
public void onCreate(SQLiteDatabase db) {
String sql="create table number1 (id integer primary key autoincrement,name varchar(20),phone int)";
db.execSQL(sql );
Log.e("数据库表","创建表成功");
}
/** * @param oldVersion 就得数据库版本 * @param newVersion 更新后的数据库版本 * @param db 数据库对象,用来对数据进行增删改查等操作 */
@Override//数据库更新时调用,数据库一旦创建成功,需要修改数据库表或者增加表的时候就在此方法实现
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {
}
}
注意:还需要调用下面方法才可以真正创建数据库: MySqlitehelper my=new MySqlitehelper(this);
my.getWritableDatabase();
接下来就是对数据库数据进行操作: package com.example.util;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;
public class Contacts {
/** * 实现联系人的增删改查 */
private MySqlitehelper helper;
public Contacts(Context context){
helper=new MySqlitehelper(context);
}
/** * 增加一条联系人记录 * * @param name * 联系人名字 * @param number * 联系人号码 */
public void add(String name,int phone) {
SQLiteDatabase db=helper.getWritableDatabase();
String sql="insert into number1 (name,phone) values(?,?)";
db.execSQL(sql,new Object[]{name,phone});
db.close();
}
/** * 删除一条联系人记录 * * @param name * 联系人名字 */
public void delete(String name) {
SQLiteDatabase db=helper.getWritableDatabase();
String sql="delete from number1 where name=?";
db.execSQL(sql,new String[]{name});
db.close();
}
/** * 修改记录 * @param name 修改的用户名 * @param phone 修改的号码 */
public void update(String name,int phone) {
String sql="update number1 set phone=? where name=?";
SQLiteDatabase db=helper.getWritableDatabase();
db.execSQL(sql,new Object[]{phone,name});
db.close();
}
/** * 查询记录 * @param name 需要查询的用户 */
public int query(String name) {
int query_phone =0;
SQLiteDatabase db=helper.getReadableDatabase();
String sql="select * from number1 where name=?";
Cursor cursor=db.rawQuery(sql,new String[]{name});
if(cursor.moveToNext()){//一定要判断游标是否可以移动到下一行
query_phone=cursor.getInt(2);//Cursor是从0开始
}
cursor.close();
db.close();
return query_phone;
}
public void deleteAll(){
String sql="delete from number1";
SQLiteDatabase db=helper.getWritableDatabase();
db.execSQL(sql);
db.close();
}
}
到此,基本数据操作已经实现,剩下的就是根据具体业务逻辑来使用封装好的方法。 使用谷歌提供的API同样创建一个帮助类: package com.wnl.dao;
import com.example.studentinfo.MainActivity;
import com.example.studentinfo.R;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
public class DataBaseHelper extends SQLiteOpenHelper {
public DataBaseHelper(Context context) {
super(context,"students.db",1);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.e("DataBaseHelper","onCreate");
String sql="create table students1(_id integer primary key autoincrement,"+
" id varchar(20),number varchar(20) )";
db.execSQL(sql);
Log.e("DataBaseHelper-->onCreate","成功创建了表");
}
@Override
public void onUpgrade(SQLiteDatabase db,int newVersion) {
Log.e("DataBaseHelper","onUpgrade");
}
接下来就是使用此类来进行数据操作: package com.wnl.dao;
import java.util.HashMap;
import java.util.Map;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class StudentsIpl {
/** * 实现学生信息的增删改查 */
private DataBaseHelper dh;
public StudentsIpl(Context context) {
dh = new DataBaseHelper(context);
}
/** * 增加一条学生记录 * * @param id * 学生ID * @param name * 学生姓名 * @param number * 学生号码 */
public long addStudent(String id,String name,String number) {
SQLiteDatabase db = dh.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("id",id);
cv.put("name",name);
cv.put("number",number);
long rowid = db.insert("students1",cv);
db.close();
return rowid;
}
/** * 删除全部数据 */
public void deleteAll(){
SQLiteDatabase db=dh.getWritableDatabase();
db.delete("students1",null);
db.close();
}
/** * 删除指定数据 */
public void delete(String name){
SQLiteDatabase db=dh.getWritableDatabase();
db.delete("students1","name=?",new String[]{name});
db.close();
}
/**查询数据库一共有多少条记录 * */
public int getTotalInfo(){
SQLiteDatabase db=dh.getReadableDatabase();
Cursor cursor=db.query("students1",null);
int count=cursor.getCount();
return count;
}
/** * 查询指定学生记录,并把记录封装到HashMap中 * @param position 需要查询记录的位置 * @return */
public Map<String,String> queryStudent(int position) {
Map<String,String> map = new HashMap<String,String>();
SQLiteDatabase db = dh.getReadableDatabase();
Cursor cursor = db.query("students1",null);// 实现全部查询
cursor.moveToPosition(position);
String id=cursor.getString(1);// 取得学生ID
String name=cursor.getString(2);// 取得学生姓名
String number=cursor.getString(3);// 取得学生号码
map.put("id",id);
map.put("name",name);
map.put("number",number);
cursor.close();
dh.close();
return map;
}
}
至此,两种方式来进行SQLite编程介绍好了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |