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