关于Sqlite数据库连接Android
2016-03-25 21:51
465 查看
最近因为要做一个安卓的课设,涉及到了许多数据库方面的支持,搜了很多CSDN的文章以及百度了许多博客,总的来说大底千篇一律,或者过于复杂,自己整理了一下文章,希望能够精简的讲述如果连接数据库。
笔者搜集网上博文,大抵可以分为两种方法实现通过Android对Sqlite数据库的操作.
其中方法一是新建一个类继承SQLiteOpenHelper类作为帮助类,当需要的时候调用帮助类里面的方法进行修改。
方法二是SQLiteDatabase类定义一个对象,然后通过函数实现对数据库的修改。
综合两种方法,笔者觉得方法二更为简单,因为很多都是数据库语句,可以很自由的修改。这两种方法在后文的源代码中都有用到,其中数据的添加笔者用方法一实现,数据的删除查找排序笔者用方法二实现,读者可以自行对比。本文主要介绍方法一。
1.首先笔者新建一个Android工程,新建一个EditText,一个Listview,三个Button
Xml文件新加代码如下:
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:ems="10"
/>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_alignLeft="@+id/editText1"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText1" >
</ListView>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="添加" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/listView1"
android:layout_toRightOf="@+id/button1"
android:text="查询" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/listView1"
android:layout_toRightOf="@+id/button2"
android:text="删除" />
2.在类中声明对象并且绑定监听器,同时声明数据库对象
3.新建一个OpenCreateDB()方法并且在onCreate()中执行这个方法
public void OpenCreateDB(){
db = openOrCreateDatabase("sqldatas", this.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS student (_id INTEGER PRIMARY KEY AUTOINCREMENT, Text text)");
}
这里表示我们新建一个名叫sqldatas的数据库,里面新建一个拥有记录数据库ID的_id和text类型的Text的名叫student的表。
此时我们可以尝试运行下程序,笔者这里使用的是安卓虚拟机,在Windows环境下以管理员权限打开命令提示符输入adb shell
然后通过cd命令打开到data/data/程序名/databases/可以看到一个数据库文件已经被创建
我们通过sqlite3 sqldatas可以打开这个数据库
再数据.schema命令我们可以查询到数据库的结构
至此,数据库的创建已经实现,下面讲解添加/查询/删除功能。
1.添加功能的实现
首先在Oncreate()中实现对EditText控件的监听
Select=(EditText)findViewById(R.id.editText1);
接着新建一个InsertData()方法
public void InsertData(){
db.execSQL("INSERT INTO student VALUES (NULL,?)", new String[]{Select.getText().toString()});
}
看到这里可以发现execSQL里面的语句和数据库操作语句十分像,事实上后面很多语句都是这样的。
然后接着绑定一个按钮,单击时执行InsertData()
Add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InsertData();
}
});
运行效果图如下:
2.显示功能
添加功能Display()
Add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InsertData();
}
});
并且我们将Display()加入到单击查询按钮事件中
值得一提是如果需要加入限定条件 例如查询分数80分以上的 或者姓名为张三的人
只需要修改第三行也就是rawQuery中的语句
例如
Cursor c = da.rawQuery(“SELECT * FROM student order by Text”, null);
这条语句是根据表中Text大小进行排序,当然前提Text得是数字。其他的功能可以参照SQL命令进行测试
效果图:
3.删除命令
添加方法Delect()
public void Delect(){
db.execSQL("DELETE FROM student WHERE Text=?",new String[]{Select.getText().toString()});
}
并且加入到删除按钮的单击事件中
以上就是关于数据库添加查询删除这些基本功能的实现,如果有哪里写的不对的话希望指出
源码地址:https://github.com/Ninse/Android Sqlite文件夹中
笔者搜集网上博文,大抵可以分为两种方法实现通过Android对Sqlite数据库的操作.
其中方法一是新建一个类继承SQLiteOpenHelper类作为帮助类,当需要的时候调用帮助类里面的方法进行修改。
方法二是SQLiteDatabase类定义一个对象,然后通过函数实现对数据库的修改。
综合两种方法,笔者觉得方法二更为简单,因为很多都是数据库语句,可以很自由的修改。这两种方法在后文的源代码中都有用到,其中数据的添加笔者用方法一实现,数据的删除查找排序笔者用方法二实现,读者可以自行对比。本文主要介绍方法一。
1.首先笔者新建一个Android工程,新建一个EditText,一个Listview,三个Button
Xml文件新加代码如下:
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:ems="10"
/>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_alignLeft="@+id/editText1"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText1" >
</ListView>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="添加" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/listView1"
android:layout_toRightOf="@+id/button1"
android:text="查询" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/listView1"
android:layout_toRightOf="@+id/button2"
android:text="删除" />
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:ems="10" /> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/button1" android:layout_alignLeft="@+id/editText1" android:layout_alignParentRight="true" android:layout_below="@+id/editText1" > </ListView> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:text="添加" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/listView1" android:layout_toRightOf="@+id/button1" android:text="查询" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/listView1" android:layout_toRightOf="@+id/button2" android:text="删除" /> |
3.新建一个OpenCreateDB()方法并且在onCreate()中执行这个方法
public void OpenCreateDB(){
db = openOrCreateDatabase("sqldatas", this.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS student (_id INTEGER PRIMARY KEY AUTOINCREMENT, Text text)");
}
1 2 3 4 | public void OpenCreateDB(){ db = openOrCreateDatabase("sqldatas", this.MODE_PRIVATE, null); db.execSQL("CREATE TABLE IF NOT EXISTS student (_id INTEGER PRIMARY KEY AUTOINCREMENT, Text text)"); } |
此时我们可以尝试运行下程序,笔者这里使用的是安卓虚拟机,在Windows环境下以管理员权限打开命令提示符输入adb shell
然后通过cd命令打开到data/data/程序名/databases/可以看到一个数据库文件已经被创建
我们通过sqlite3 sqldatas可以打开这个数据库
再数据.schema命令我们可以查询到数据库的结构
至此,数据库的创建已经实现,下面讲解添加/查询/删除功能。
1.添加功能的实现
首先在Oncreate()中实现对EditText控件的监听
Select=(EditText)findViewById(R.id.editText1);
1 | Select=(EditText)findViewById(R.id.editText1); |
public void InsertData(){
db.execSQL("INSERT INTO student VALUES (NULL,?)", new String[]{Select.getText().toString()});
}
1 2 3 | public void InsertData(){ db.execSQL("INSERT INTO student VALUES (NULL,?)", new String[]{Select.getText().toString()}); } |
然后接着绑定一个按钮,单击时执行InsertData()
Add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InsertData();
}
});
1 2 3 4 5 6 | Add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { InsertData(); } }); |
2.显示功能
添加功能Display()
Add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InsertData();
}
});
1 2 3 4 5 6 | Add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { InsertData(); } }); |
值得一提是如果需要加入限定条件 例如查询分数80分以上的 或者姓名为张三的人
只需要修改第三行也就是rawQuery中的语句
例如
Cursor c = da.rawQuery(“SELECT * FROM student order by Text”, null);
这条语句是根据表中Text大小进行排序,当然前提Text得是数字。其他的功能可以参照SQL命令进行测试
效果图:
3.删除命令
添加方法Delect()
public void Delect(){
db.execSQL("DELETE FROM student WHERE Text=?",new String[]{Select.getText().toString()});
}
1 2 3 | public void Delect(){ db.execSQL("DELETE FROM student WHERE Text=?",new String[]{Select.getText().toString()}); } |
以上就是关于数据库添加查询删除这些基本功能的实现,如果有哪里写的不对的话希望指出
源码地址:https://github.com/Ninse/Android Sqlite文件夹中
相关文章推荐
- Android代码生成器设计文档
- Android课程---课下练习(表格、线性和相对布局)
- android之常用知识点(一)
- [android] activity的生命周期
- Android高德地图API配置
- 找不到android.support.v4.view.ViewPager
- android 标题栏title开源库集成
- Android课程---布局管理器之相对布局(二)
- android开发带下划线的多行文本框
- ListView in fragment 列表视图的使用
- Android课程---布局管理器之相对布局(一)
- Android学习之ItemTouchHelper实现RecylerView的拖拽以及滑动删除功能
- Android课程---布局管理器
- Android权限监控拦截动态实现
- android Scroll学习
- 网易3.22号笔试(android)
- android 代码动态创建视图
- Android之ActivityManagerService浅谈
- Android 源码系列之<一>从源码的角度深入理解ImageView的ScaleType属性
- Android神奇跑马灯效果多种实现