android 怎么往数据库里面添加数据

android 怎么往数据库里面添加数据,第1张

一、引入

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

本的 *** 作包括创建、读取、更新、删除,即我们通常说的 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)方法用于取出数据

Android中提供4种数据存储的方法:(1)SharedPreferences,用键值对的方式来存储数据,是一种轻量级的存储机制,可以存储一些属性等。(2)Files:文件输入输出流的方式存储数据,FileInputStream和FileOutputStream。在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件。写入SD卡除外。(3)SQLite(4)网络(这个不算吧~~~--!)。

SQLite:

(1)创建和打开数据库可以使用方法openOrCreateDatabase,它会自动去检测是否存在数据库,如果存在则打开,如果不存在则创建一个数据库;成功返回一个SQliteDatabase对象。(2)创建一张表通过SQL语句实现,调用sqliteDatabase对象的execSQL方法,执行创建表的SQL语句。

(3)向数据表中添加一条记录可以直接通过SQL语句实现,也可以使用ContentValue对象,ContentValue对象是一个Map,Key是字段名,Value是值。Cv.put(key,value)然后调用sqliteDatabase对象的

insert(tableName,null,cv)方法插入数据。

(4)删除数据可以直接执行SQL,也可以执行sqliteDatabase的delete方法。

(5)同理修改数据也是执行SQL或调用update方法,需要传入ContenValue的对象表示修改的内容。

(6)关闭数据库sqliteDatabase.close()

(7)删除指定表调用SQL语句即可。

(8)查询:在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor对象指向的是每条数据。例如cur.moveToFirst()cur.moveToNext()等。在实际开发中,为了能够更好地管理和维护数据库,我们会封装一个继承自SQLiteOpenHelper类的数据库 *** 作类。SQLiteOpenHelper的构造方法中分别需要传入Context、数据库名称、CursorFactory(一般默认null)、数据库版本号。在SQLiteOpenHelper中首先执行的是onCreate方法(当数据库第一次被创建时)。在构造函数中并没有真正创建数据库,而是调用getWriteableDatabase或者getReadableDatabase方法时才真正去创建数据库,并且返回一个SQLiteDatabase对象。

1、运行输入 adb shell (前提是模拟器正在运行)。

2、进入命令界面后 输入 ls 指令 会列出文件的目录。

3、cd 进入你想要的目录里。

4、一层一层进去后会发现 databases目录 你的数据文件就在这个目录下放着。

5、sqlite3 test (test就是你创建的数据库的名称 注意:不要加.db 后缀)。

6、现在你就进入你创建的test数据库了使用 .tables 就可以查看所有的表了。


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

原文地址: http://outofmemory.cn/tougao/8120237.html

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

发表评论

登录后才能评论

评论列表(0条)

保存