android怎么连接sqlite数据库?

android怎么连接sqlite数据库?,第1张

public class SQLiteActivity extends Activity {

/** Called when the activity is first created. */

private Button createButton

private Button insertButton

private Button updateButton

private Button updateRecordButton

private Button queryButton

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

setContentView(R.layout.main)

createButton = (Button)findViewById(R.id.createDatabase)

updateButton = (Button)findViewById(R.id.updateDatabase)

insertButton = (Button)findViewById(R.id.insert)

updateRecordButton = (Button)findViewById(R.id.update)

queryButton = (Button)findViewById(R.id.query)

createButton.setOnClickListener(new CreateListener())

updateButton.setOnClickListener(new UpdateListener())

insertButton.setOnClickListener(new InsertListener())

updateRecordButton.setOnClickListener(new UpdateRecordListener())

queryButton.setOnClickListener(new QueryListener())

}

class CreateListener implements OnClickListener{

@Override

public void onClick(View v) {

//创建一个DatabaseHelper对象

DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db")

//只有调用了DatabaseHelper对象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,才会创建,或打开一个数据库

SQLiteDatabase db = dbHelper.getReadableDatabase()

}

}

class UpdateListener implements OnClickListener{

@Override

public void onClick(View v) {

DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2)

SQLiteDatabase db = dbHelper.getReadableDatabase()

}

}

class InsertListener implements OnClickListener{

@Override

public void onClick(View v) {

//生成ContentValues对象

ContentValues values = new ContentValues()

//想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致

values.put("id", 1)

values.put("name","zhangsan")

DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2)

SQLiteDatabase db = dbHelper.getWritableDatabase()

//调用insert方法,就可以将数据插入到数据库当中

db.insert("user", null, values)

}

}

//更新 *** 作就相当于执行SQL语句当中的update语句

//UPDATE table_name SET XXCOL=XXX WHERE XXXXCOL=XX...

class UpdateRecordListener implements OnClickListener{

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

//得到一个可写的SQLiteDatabase对象

DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db")

SQLiteDatabase db = dbHelper.getWritableDatabase()

ContentValues values = new ContentValues()

values.put("name", "zhangsanfeng")

//第一个参数是要更新的表名

//第二个参数是一个ContentValeus对象

//第三个参数是where子句

db.update("user", values, "id=?", new String[]{"1"})

}

}

class QueryListener implements OnClickListener{

@Override

public void onClick(View v) {

System.out.println("aaa------------------")

Log.d("myDebug", "myFirstDebugMsg")

DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db")

SQLiteDatabase db = dbHelper.getReadableDatabase()

Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null)

while(cursor.moveToNext()){

String name = cursor.getString(cursor.getColumnIndex("name"))

System.out.println("query--->" + name)

}

}

}

}

这种方式通常连接一个外部的数据库,第一个参数就是数据库文件,这个数据库不是当前项目中生成的,通常放在项目的Assets目录下,当然也可以在手机内,如上面参数那个目录,前提是那个文件存在且你的程序有访问权限。

另一种使用数据库的方式是,自己创建数据库并创建相应的数据库表,参考下面的代码:

public class DatabaseHelper extends SQLiteOpenHelper {

//构造,调用父类构造,数据库名字,版本号(传入更大的版本号可以让数据库升级,onUpgrade被调用)

public DatabaseHelper(Context context) {

super(context, DatabaseConstant.DATABASE_NAME, null, DatabaseConstant.DATABASE_VERSION)

}

//数据库创建时调用,里面执行表创建语句.

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(createVoucherTable())

}

//数据库升级时调用,先删除旧表,在调用onCreate创建表.

@Override

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

db.execSQL("DROP TABLE IF EXISTS " + DatabaseConstant.TABLE_NAME)

onCreate(db)

}

//生成 创建表的SQL语句

private String createVoucherTable() {

StringBuffer sb = new StringBuffer()

sb.append(" CREATE TABLE ").append(DatabaseConstant.TABLE_NAME).append("( ").append(“ID”)

.append(" TEXT PRIMARY KEY, ")

.append(“USER_ID”).append(" INTEGER, ").append(“SMS_CONTENT”).append(" TEXT ) ")

return sb.toString()

}

}

继承SQLiteOpenHelper并实现里面的方法.

之后:

//得到数据库助手类

helper = new DatabaseHelper(context)

//通过助手类,打开一个可读写的数据库连接

SQLiteDatabase database = helper.getReadableDatabase()

//查询表中所有记录

database.query(DatabaseConstant.TABLE_NAME, null, null, null, null, null, null)

与安卓无关,sqlite本身的特性就是文件性数据库,如果某个后台进程后者应用进程通过sqlite3_open或者sqlite3_popen打开数据库文件,那么默认建立一个连接,其他进程如果访问返回sqlite_busy,等同于库锁状态。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存