如何往android中添加数据库

如何往android中添加数据库,第1张

一、新建外部SQLite数据

(1)下载并安装 SQLite可视化管理工具(SQLite Expert Pro) v3.4.17 破解版

http://www.cr173.com/soft/36343.html

(2)将你手头上的数据放到EXCEL表格中,保存为CSV格式的数据

(3)在此工具中按照你现有的数据格式新建数据库和表,如数据库为:contact.db,表为employee

(4)通过此工具菜单栏中Import/Export下的Import text file(CSV,TSC)功能,将你现有的CSV数据导入到你新建的数据表中(主要目的是省的一个一个的录入了)

二、在eclipse中新建一个android app工程,并在新建的工程文件夹点右键new->folder,在res文件夹下新建raw文件夹(如果有就不用新建了)

三、用鼠标将新建的SQLite数据库文件contact.db拖动到新建工程的res下的raw文件下,出现提示,选择copy

四、程序代码

private static final String DATABASE_PATH = "/data/data/你的主程序包路径(如:com.szair.contact)/databases"

private static final int DATABASE_VERSION = 0

private static final String DATABASE_NAME = "contact.db"

private static String outFileName = DATABASE_PATH + "/" + DATABASE_NAME

try {

buildDatabase()//见下

} catch (Exception e) {

e.printStackTrace()

}

//SQLiteDatabase对象

SQLiteDatabase db=SQLiteDatabase.openDatabase(outFileName, null,SQLiteDatabase.NO_LOCALIZED_COLLATORS)

String t="SELECT 字段名1,字段名2 FROM employee WHERE **** ORDER BY ***"

Cursor c =db.rawQuery(t, null)

if(c.moveToFirst()){

for(int i=0i

{

String ziduan1=c.getString(0)//字段1的数据

String ziduan2=c.getString(1)//字段1的数据

}

}

------------------------------------------------

//前面用到的buildDatabase方法

private void buildDatabase() throws Exception{

InputStream myInput = getResources().openRawResource(R.raw.sz_contact)

File file = new File(outFileName)

File dir = new File(DATABASE_PATH)

if (!dir.exists()) {

if (!dir.mkdir()) {

throw new Exception("创建失败")

}

}

if (!file.exists()) {

try {

OutputStream myOutput = new FileOutputStream(outFileName)

byte[] buffer = new byte[1024]

int length

while ((length = myInput.read(buffer))>0){

myOutput.write(buffer, 0, length)

}

myOutput.close()

myInput.close()

} catch (Exception e) {

e.printStackTrace()

}

}

}

五、程序发布

按照以上方式,可以将外部建的SQLite数据库成功的发布出来

一、引入

数据库创建的问题解决了,接下来就该使用数据库实现应用程序功能的时候了。基

本的 *** 作包括创建、读取、更新、删除,即我们通常说的 CRUD(Create, Read, Update, Delete)。

在实现这些 *** 作的时候,我们会使用到两个比较重要的类 SQLiteDatabase 类和 Cursor 类。

二、创建表

1,execSQL(String sql):执行一条 sql 语句,且执行 *** 作不能为 SELECT

因为它的返回值为 void,所以推荐使用 insert、update 方法等

2.,execSQL (String sql,Object[] bindArgs)

sql:执行一条 sql 语句

bindArgs:为 sql 语句中的?赋值

三、添加数据

1、execSQL(String sql)

2、使用对象的 insert 方法

ContentValues values = new ContentValues()

values.put(USERNAME, user.getUsername())

values.put(PASSWORD, user.getPassword())

db.insert(TABLE_NAME, null, values)

参数:

table:数据库中的表名

nullColumnHack:指定默认插入字段,为 null 时能插入数据

values:表示插入字段所对应的值,使用 put 方法。

四、删除数据

1、execSQL(String sql)

2、使用对象的 delete 方法

String whereClaues="_id=?"

String [] whereArgs={String.valueOf(id)}

//db.delete(TABLE_NAME, "_id="+id, null)

db.delete(TABLE_NAME, whereClaues, whereArgs)

参数

table:数据库的表名

whereClause:where 子句,比如:_id=?

whereArgs:where 子句中?的值

五、修改数据

1、execSQL(String sql)

2、使用对象的 delete 方法

ContentValues values = new ContentValues()

values.put(USERNAME, user.getUsername())

values.put(PASSWORD, user.getPassword())

String whereClaues="_id=?"

String [] whereArgs={String.valueOf(user.getId())}

db.update(TABLE_NAME, values, whereClaues, whereArgs)

参数

table:数据库的表名

values:代表要修改的值,修改方法还是 put(key,values)

whereClause:条件子句,比如 id=?,name=?

whereArgs:为 whereClause 中的?赋值,比如:new String[]{"1","张三"}

图:

参考代码:

程序内使用SQLite数据库是通过SQLiteOpenHelper进行 *** 作

1.       自己写个类继承SQLiteOpenHelper,重写以下3个方法

public void onCreate(SQLiteDatabase db)

{//创建数据库时的 *** 作,如建表}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

{

//版本更新的 *** 作

}

2.    通过SQLiteOpenHelper的getWritableDatabase()获得一个SQLiteDatabase数据库,以后的 *** 作都是对SQLiteDatabase进行 *** 作。

3.       对得到的SQLiteDatabase对象进行增,改,删,查等 *** 作。

代码

package cx.myNote

import android.content.ContentValues

import android.content.Context

import android.content.Intent

import android.database.Cursor

import android.database.sqlite.SQLiteDatabase

import android.database.sqlite.SQLiteOpenHelper

//DBOptions for login

public class DBOptions {

private static final String DB_NAME = "notes.db"

private static final String DB_CREATE="create table logininf(name text,pwd text)"

public class DBHelper extends SQLiteOpenHelper

{

public DBHelper(Context context) {

super(context,DB_NAME, null, 1)

}

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

//建表

db.execSQL(DB_CREATE)

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub

db.execSQL("drop table if exists logininf")

onCreate(db)

}

}

private Context context

private SQLiteDatabase db

private DBHelper dbHelper

public  DBOptions(Context context)

{

this.context = context

dbHelper = new DBHelper(context)

db=dbHelper.getReadableDatabase()

}

//自己写的方法,对数据库进行 *** 作

public String getName()

{

Cursor cursor = db.rawQuery("select name from logininf", null)

cursor.moveToFirst()

return cursor.getString(0)

}

public int changePWD(String oldP,String pwd)

{

ContentValues values = new ContentValues()

values.put("pwd", pwd)

return db.update("logininf", values,"pwd="+oldP, null)

}

}

insert方法插入的一行记录使用ContentValus存放,ContentValues类似于Map,它提供了put(String key, Xxx value)(其中key为数据列的列名)方法用于存入数据、getAsXxxx(String key)方法用于取出数据


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10100128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存