Android SQLite的使用
来源:互联网 发布:php m常用数组函数 编辑:程序博客网 时间:2024/05/17 08:41
SQLite Android中的数据库,用于数据存储。 一下是基本用法。
一、 SQLiteOpenHelper类:
使用数据库,必须要继承自sqliteopenhelper类
public class Db extends SQLiteOpenHelper {public Db(Context context) {super(context, "db", null, 1); // “1”是版本号,用于数据库更新时的标记。}@Overridepublic void onCreate(SQLiteDatabase arg0) {arg0.execSQL("create table user("+ "_id integer primary key autoincrement,"+ "name TEXT DEFAULT \"\"," + "sex TEXT DEFAULT \"\")"); // 创建一个表。 有_id列,name列,sex列。}@Overridepublic void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {}/** * @param args */public static void main(String[] args) {}}
二、 数据库的读写操作。
这是数据库的基本读写代码:
private Db db;private SQLiteDatabase dbread, dbwrite;
Db db = new Db(this); SQLiteDatabase dbWrite = db.getWritableDatabase();//写 ContentValues cValues =new ContentValues(); cValues.put("name", "小张"); cValues.put("sex", "男"); dbWrite.insert("user", null, cValues); cValues =new ContentValues(); cValues.put("name", "小丽"); cValues.put("sex", "男"); dbWrite.insert("user", null, cValues); dbWrite.close(); SQLiteDatabase dbreaDatabase = db.getReadableDatabase();//读 Cursor cursor=dbreaDatabase.query("user", null, null, null, null, null, null); while (cursor.moveToNext()) { String nameStrinr.getSg =cursor.getString(cursor.getColumnIndex("name")); String sexString =cursotring(cursor.getColumnIndex("sex")); System.out.println(nameString+"+"+sexString); }
三、用一个listview 用于显示数据库的内容,还有数据库的增删操作
public class MainActivity extends ActionBarActivity {private ListView listView;private EditText eTextname, eTextsex;private Button btncommitButton;private SimpleCursorAdapter adapter;private Db db;private SQLiteDatabase dbread, dbwrite;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();db = new Db(this);dbread = db.getReadableDatabase();dbwrite = db.getWritableDatabase();Cursor cursor = dbread.query("user", null, null, null, null, null, null);// 数据库专用的listview// adapter,第一个参数是列表样式,第二个是数据库cursor,第三第四个,是数据库的列项与listview的各项的对应。// 这里的cursor先传null,然后在freshlistview里进行adapterchangecursor()来进行刷新操作。adapter = new SimpleCursorAdapter(getApplicationContext(),R.layout.item_listview, null, new String[] { "name", "sex" },new int[] { R.id.tvName, R.id.tvSex });listView.setAdapter(adapter);freshlistview();btncommitButton.setOnClickListener(new View.OnClickListener() {// 两个editview进行数据库的写入,然后freshlistview。@Overridepublic void onClick(View v) {ContentValues cValues = new ContentValues();cValues.put("name", eTextname.getText().toString());cValues.put("sex", eTextsex.getText().toString());dbwrite.insert("user", null, cValues);freshlistview();}});listView.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1,final int arg2, long arg3) {// listview 长按操作 删除数据库中的选中项目,然后freshlistview。new AlertDialog.Builder(MainActivity.this).setTitle("提示").setMessage("删除吗").setNegativeButton("取消", null).setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {Cursor cursor = adapter.getCursor();cursor.moveToPosition(arg2);int itemID = cursor.getInt(cursor.getColumnIndex("_id"));dbwrite.delete("user", "_id=?",new String[] { itemID + "" });freshlistview();}}).show();return true;}});}private void initView() {listView = (ListView) findViewById(R.id.listview);eTextname = (EditText) findViewById(R.id.etname);eTextsex = (EditText) findViewById(R.id.etsex);btncommitButton = (Button) findViewById(R.id.btnCommit);}private void freshlistview() {// 刷新listviewCursor cursor = dbread.query("user", null, null, null, null, null, null);adapter.changeCursor(cursor);}}
xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.lb.lb4_29_sqlite.MainActivity" > <ListView android:id="@+id/listview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" > </ListView> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="name:" /> <EditText android:id="@+id/etname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="sex:" /> <EditText android:id="@+id/etsex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提交" android:id="@+id/btnCommit"/> </LinearLayout></LinearLayout>
0 0
- android SQlite 的使用
- android的sqlite使用
- android sqlite 的使用
- android Sqlite 的使用
- Android SQLite的使用
- android SQLite 的使用
- Android SQLite的使用
- Android:Sqlite的使用
- [Android] SQlite的使用
- android SQLite的使用
- android SQLite的使用
- Android SQLite 的使用
- Android使用的SQLite数据库
- android中sqlite的使用
- android中SQLite的使用
- android中SQLite的使用
- Android SQLite的使用实例
- android database sqlite的使用
- Linux用户态和内核态间的转换
- HMAC-MD5算法原理及实现
- 申请SSL证书怎样验证域名所有权
- 浅谈TCP协议
- C#中的集合用法分析
- Android SQLite的使用
- 杭州4--29 关于sqltest_go和sqltest_beego的几个注意点
- RecyclerView的万能分割线
- Swift--自定义UITabBar
- android 学习路线
- drop,truncate与delete的区别
- 一个播放器的第三方框架
- [Leetcode刷题总结系列][Dynamic programming][Divide-and-conquer]53.Maximum Subarray
- 使用MySQL正则表达式 __MySQL必知必会