android学习笔记(六)——数据库操作
来源:互联网 发布:2017中国机电贸易数据 编辑:程序博客网 时间:2024/04/28 21:59
之前已经介绍了android的数据存储的操作,接下来就来介绍android数据库操作,对于数据库的基本增删查改,在这里就不多说了,直接开始介绍android的sqlite数据库运用方式。
1.首先需要定义sqlite的数据库对象
private SQLiteDatabase mydatabase=null;
2.获取数据库操作指针,通过context直接获取,这种方式创建的数据库位于/data/data/{包名}/databases/,openOrCreateDatabase函数,第一个参数为需要打开或创建的数据库名称,第二个参数为模式,即存储模式,和上一篇数据存储的模式大同小异,第三个参数为cursorFactory,用于查询时实例化一个光标,可以填为null
try{ mydatabase=this.openOrCreateDatabase("mydata.db",MODE_PRIVATE, null); }catch(Exception e){ Toast.makeText(this,e.getMessage(),Toast.LENGTH_LONG).show(); }
3.打开数据库之后就是基本的数据库的操作了,因为sql语句和其他数据库区别不大,就不详细说了,直接开始查询的介绍,对于查询数据库操作首先需要获得一个实例化光标,一种方式是在创建或打开数据库时载入工厂类,另一个就是通过rawQuery来获得实例化光标,这里主要介绍后者,示例代码如下:
public void updataview(){ Cursor cur=null; List<String> slist=new ArrayList<String>(); String sql="select * from newtable"; try{ cur=mydatabase.rawQuery(sql,new String[]{}); }catch(Exception e){ Toast.makeText(SqlDemo.this,e.getMessage(), Toast.LENGTH_LONG).show(); } //movenext为向下移动,到没有返回false while(cur.moveToNext()) { slist.add(cur.getString(0)); slist.add(cur.getString(1)); } //记住在用完后关闭光标 cur.close(); listshow adapter=new listshow(SqlDemo.this,slist); adapter.show(); }
在取得cur以后,可以按照自己的习惯将数据存入相应的list或者String数组中,在之后将其显示在界面上,这里一般采用动态生成的代码,定义一个布局,将动态定义的组件通过addView的方式加进去即可
public void show(){ table=(TableLayout)SqlDemo.this.findViewById(R.id.table); table.removeAllViews(); for(int i=0;i<list.size();i=i+2){ try{ TableRow row=new TableRow(context); TextView text=new TextView(context); text.setText(list.get(i).toString()); text.setId(i); TextView text1=new TextView(context); text1.setText(list.get(i+1).toString()); text1.setId(i+1); row.addView(text); row.addView(text1); table.addView(row); }catch(Exception e){ Toast.makeText(SqlDemo.this,e.getMessage(), Toast.LENGTH_LONG).show(); } } }
示例代码
.java
package com.example.ui_demo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.SimpleCursorAdapter;import android.widget.TableLayout;import android.widget.TableRow;import android.widget.TextView;import android.widget.Toast;public class SqlDemo extends Activity { private String []mysql={"读取表","删除表","创建表","插入表"}; //数据库操作 private SQLiteDatabase mydatabase=null; private TableLayout table=null; private ListView list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sql_demo); //创建或打开数据库 try{ mydatabase=this.openOrCreateDatabase("mydata.db",MODE_PRIVATE, null); }catch(Exception e){ Toast.makeText(this,e.getMessage(),Toast.LENGTH_LONG).show(); } //table=(TableLayout)this.findViewById(R.id.table); list=(ListView)this.findViewById(R.id.sqllist); myadapter m=new myadapter(this); list.setAdapter(m); } public void setupView(){ } public class myadapter extends BaseAdapter{ private Context context; public myadapter(Context context){ this.context=context; } @Override public int getCount() { // TODO Auto-generated method stub return mysql.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View vi, ViewGroup vg) { // TODO Auto-generated method stub Button button=new Button(SqlDemo.this); button.setText(mysql[position]); button.setId(position); buttonclick m=new buttonclick(); button.setOnClickListener(m); return button; } } public class listshow{ private List<String> list; private Context context; public listshow(Context context,List<String> list){ this.context=context; this.list=list; } public void show(){ table=(TableLayout)SqlDemo.this.findViewById(R.id.table); table.removeAllViews(); for(int i=0;i<list.size();i=i+2){ try{ TableRow row=new TableRow(context); TextView text=new TextView(context); text.setText(list.get(i).toString()); text.setId(i); TextView text1=new TextView(context); text1.setText(list.get(i+1).toString()); text1.setId(i+1); row.addView(text); row.addView(text1); table.addView(row); }catch(Exception e){ Toast.makeText(SqlDemo.this,e.getMessage(), Toast.LENGTH_LONG).show(); } } } } /* public class listshow extends BaseAdapter{ private Context context; private List<String> list; public listshow(Context context,List<String> list){ this.list=list; this.context=context; //this.context.setTheme(android.R.layout.simple_expandable_list_item_2); } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View vi, ViewGroup vg) { // TODO Auto-generated method stub TableLayout table=(TableLayout)vi.findViewById(R.id.table); TextView text=new TextView(context); text.setId(position); text.setText(list.get(position).toString()); table.addView(text); return table; } }*/ public class mydata { private String id; private String name; public void setmydata(String id,String name){ this.id=id; this.name=name; } } public void updataview(){ Cursor cur=null; List<String> slist=new ArrayList<String>(); String sql="select * from newtable"; try{ cur=mydatabase.rawQuery(sql,new String[]{}); }catch(Exception e){ Toast.makeText(SqlDemo.this,e.getMessage(), Toast.LENGTH_LONG).show(); } while(cur.moveToNext()) { slist.add(cur.getString(0)); slist.add(cur.getString(1)); } cur.close(); listshow adapter=new listshow(SqlDemo.this,slist); adapter.show(); } public class buttonclick implements OnClickListener{ private int i=0; @Override public void onClick(View vi) { // TODO Auto-generated method stub if(vi.getId()==0){ //查询表 updataview(); }else if(vi.getId()==1){ //删除表 String sql="DROP TABLE"+" newtable"; try{ mydatabase.execSQL(sql); }catch(Exception e){ Toast.makeText(SqlDemo.this,e.getMessage(), Toast.LENGTH_LONG).show(); } updataview(); }else if(vi.getId()==2){ //不存在创建表 String create="CREATE TABLE"+" IF NOT EXISTS"+" newtable"+" (ID INTEGER,NAME TEXT)"; try{ mydatabase.execSQL(create); }catch(Exception e){ Toast.makeText(SqlDemo.this,e.getMessage(), Toast.LENGTH_LONG).show(); } updataview(); }else if(vi.getId()==3){ //插入表 String insert="insert into "+"newtable"+" values('"+"2"+"','"+"pengchen01"+"');"; try{ mydatabase.execSQL(insert); }catch(Exception e){ Toast.makeText(SqlDemo.this,e.getMessage(), Toast.LENGTH_LONG).show(); } updataview(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.sql_demo, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}
.xml
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.ui_demo.SqlDemo" > <TableLayout android:id="@+id/table" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TableRow> <TextView android:id="@+id/textid" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="id" /> <TextView android:id="@+id/textname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="name" /> </TableRow> </TableLayout> <ListView android:id="@+id/sqllist" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_marginBottom="14dp" > </ListView></RelativeLayout>
0 0
- android学习笔记(六)——数据库操作
- C++学习笔记(六)——文件操作
- C语言学习笔记(六)——文件操作
- 数据库学习笔记(六)
- 数据库学习笔记(六)
- 学习数据库笔记六
- Android学习笔记(六)
- android学习笔记(六)
- Android学习笔记(六)
- Android学习笔记(六)
- 学习Linux笔记(六)--进程操作
- OpenResty学习笔记(六) 文件操作
- 年终大学习之MySQL数据库优化学习笔记(六) ——索引(一)
- Laravel学习笔记(六)---操作数据库--Eloquent ORM(对象关系映射)
- SpringBoot学习笔记——数据库操作
- Android 学习笔记(六)
- iOS学习笔记(十五)——数据库操作(SQLite)
- iOS学习笔记(十五)——数据库操作(SQLite)
- 判断颜色是否相等UIColor
- 单例模式
- 在 Redis 上实现的分布式锁
- CSS Sprites:鱼翅还是三鹿?
- sendto 和 recvfrom 函数
- android学习笔记(六)——数据库操作
- MyBatis数据持久化(八)sql复用
- get whole screen size;add background
- Leetcode#6 ZigZag Conversion
- RulingSite-S 系统漏洞 (台湾大学居多)
- 树莓派内核模块交叉编译
- Android RecyclerView 使用详解
- Huffman编码用MTLAB的实现及编码注释----------Matlab
- log4j.properties配置生成log文件路径问题