android学习笔记(六)——数据库操作

之前已经介绍了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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章