您的位置:首页 > 移动开发 > Android开发

Android SQLite数据库

2015-11-25 16:23 351 查看
SQLite数据库

SQLiteDatabase //管理操作数据库
管理
openDatabase //打开
openOrCreateDatabase //打开或创建
操作 增删改查
execSQL //执行SQL语句
insert //增
update //改
delete //删
query //查
rawQuery //sql语句查
事物
beginTransaction //开始
endTransaction //结束
Cursor //查询结果
move

SQLiteOpenHelper //管理数据库和版本更新
onCreate //第一次创建数据库回调
onUpgrade //数据库版本更新时回调
getReadableDatabase //读的方式打开
getWritableDatabase //写的方式打开
close //关闭所有打开的SQLiteDatabase

Demo1 插入和查询数据

public class DBTest extends Activity {
SQLiteDatabase db;

Button bn = null;
ListView listView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

initTitle();
initData();
initView();

}

public void initTitle() {

}

public void initData() {

db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString() + "/my.db3", null);

try {
db.execSQL("create table news_inf(_id integer" + " primary key autoincrement," + " news_title varchar(50),"
+ " news_content varchar(255))");
} catch (Exception e) {

Log.i("TAG", "e---" + e);
}
}

public void initView() {
listView = (ListView) findViewById(R.id.show);
bn = (Button) findViewById(R.id.ok);

queryData();

bn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View source) {
String title = ((EditText) findViewById(R.id.title)).getText().toString();
String content = ((EditText) findViewById(R.id.content)).getText().toString();

try {
// 插入数据
insertData(db, title, content);

queryData();
} catch (SQLiteException se) {

}
}
});

}

// 插入数据
private void insertData(SQLiteDatabase db, String title, String content) {
// 执行插入语句
db.execSQL("insert into news_inf values(null , ? , ?)", new String[] { title, content });
}

// 查询数据
private void queryData() {
Cursor cursor = db.rawQuery("select * from news_inf", null);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(DBTest.this, R.layout.line, cursor, new String[] {
"news_title", "news_content" }, new int[] { R.id.my_title, R.id.my_content },
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
listView.setAdapter(adapter);

}

@Override
public void onDestroy() {
super.onDestroy();
// 退出程序时关闭SQLiteDatabase
if (db != null && db.isOpen()) {
db.close();
}
}

}


Demo2 单词本

public class Dict extends Activity implements View.OnClickListener{
MyDatabaseHelper dbHelper;
Button insert = null;
Button search = null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

initTitle();
initData();
initView();

}

public void initTitle() {

}

public void initData() {
// 创建MyDatabaseHelper对象,指定数据库版本为1,此处使用相对路径即可,
// 数据库文件自动会保存在程序的数据文件夹的databases目录下。
dbHelper = new MyDatabaseHelper(this, "myDict.db3", 1);

}

public void initView() {
insert = (Button) findViewById(R.id.insert);
search = (Button) findViewById(R.id.search);
insert.setOnClickListener(this);
search.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.insert:// 插入
String word = ((EditText) findViewById(R.id.word)).getText().toString();
String detail = ((EditText) findViewById(R.id.detail)).getText().toString();

insertData(dbHelper.getReadableDatabase(), word, detail);

break;
case R.id.search:// 搜索
// 获取用户输入
String key = ((EditText) findViewById(R.id.key)).getText().toString();
// 执行查询
Cursor cursor = dbHelper.getReadableDatabase().rawQuery(
"select * from dict where word like ? or detail like ?",
new String[] { "%" + key + "%", "%" + key + "%" });

Bundle data = new Bundle();
data.putSerializable("data", converCursorToList(cursor));
Intent intent = new Intent(Dict.this, ResultActivity.class);
intent.putExtras(data);
startActivity(intent);
break;
default:
break;
}
}

//插入
private void insertData(SQLiteDatabase db, String word, String detail) {
db.execSQL("insert into dict values(null , ? , ?)", new String[] { word, detail });
Toast.makeText(Dict.this, "添加生词成功!", 8000).show();
}

//查询结果转集合
protected ArrayList<Map<String, String>> converCursorToList(Cursor cursor) {
ArrayList<Map<String, String>> result = new ArrayList<Map<String, String>>();
// 遍历Cursor结果集
while (cursor.moveToNext()) {
// 将结果集中的数据存入ArrayList中
Map<String, String> map = new HashMap<String, String>();
// 取出查询记录中第2列、第3列的值
map.put("word", cursor.getString(1));
map.put("detail", cursor.getString(2));
result.add(map);
}
return result;
}

@Override
public void onDestroy() {
super.onDestroy();
// 退出程序时关闭MyDatabaseHelper里的SQLiteDatabase
if (dbHelper != null) {
dbHelper.close();
}
}

}


public class MyDatabaseHelper extends SQLiteOpenHelper {
final String CREATE_TABLE_SQL = "create table dict(_id integer primary " + "key autoincrement , word , detail)";

public MyDatabaseHelper(Context context, String name, int version) {
super(context, name, null, version);
}

@Override
public void onCreate(SQLiteDatabase db) {
// 第一次使用数据库时自动建表
db.execSQL(CREATE_TABLE_SQL);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("--------onUpdate Called--------" + oldVersion + "--->" + newVersion);
}
}


public class ResultActivity extends Activity {

List<Map<String, String>> list;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.popup);

initTitle();
initData();
initView();

}

public void initTitle() {

}

public void initData() {
list = (List<Map<String, String>>) getIntent().getExtras().getSerializable("data");

}

public void initView() {
ListView listView = (ListView) findViewById(R.id.show);
SimpleAdapter adapter = new SimpleAdapter(ResultActivity.this, list, R.layout.line, new String[] { "word",
"detail" }, new int[] { R.id.word, R.id.detail });
listView.setAdapter(adapter);
}

}


Code见 https://github.com/huanyi0723/SQLiteDemo/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: