Chinaunix首页 | 论坛 | 博客

Go

  • 博客访问: 220108
  • 博文数量: 67
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 783
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-12 16:29
文章分类

全部博文(67)

文章存档

2015年(1)

2014年(47)

2013年(19)

我的朋友

分类: Android平台

2014-09-28 23:50:01

原创:kylin_zeng  http://blog.chinaunix.net/uid/23795897.html 在此感谢mars 老师的帮助。
转载请注明原创出处,尊重他人的劳动成果。

一、
1、getReadableDatabase();  //创建或者打开一个数据库。
2、getWritableDatabase();   //创建或打开一个数据库,返回的句柄是可写的。
3、进入数据 sqlite3  test_mars_db 
.schema 显示当前数据库有哪些表,以及表名称。
select * from user   //查看数据。
update table_name  set  xxcol=xxx where  xxcol=xxx  //更新数据
db.update("user", values, "id=?", new String[]{"1"});
//第一个参数是要更新的表名//第二个参数是一个ContentValeus对象//第三个参数是where子句
id=? 这个有几个占位符,那么new String[]{"1"} 中的1就要改成几

/data/data/com.android.browser/databases/webview.db  ==>> select * from password
二、开始实例:
1、建立几个按钮:
android:id="@+id/createDatabase"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="createDatabase"
    />
    
android:id="@+id/updateDatabase"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="updateDatabase"
    />


android:id="@+id/insert"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="insert"/>
android:id="@+id/update"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="update"/>
android:id="@+id/query"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="query"/>

2、创建数据库类:

//DatabaseHelper作为一个访问SQLite的助手类,提供两个方面的功能,
//第一,getReadableDatabase(),getWritableDatabase()可以获得SQLiteDatabse对象,通过该对象可以对数据库进行操作
//第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作


public class DatabaseHelper extends SQLiteOpenHelper {       //创建一个 DatabaseHelper类,并且继承SQLiteOpenHelper

        private static final int VERSION = 1;
        //在SQLiteOepnHelper的子类当中,必须有该构造函数            共复写3个构造函数。
        public DatabaseHelper(Context context, String name, CursorFactory factory,  int version) {
                //必须通过super调用父类当中的构造函数
                super(context, name, factory, version);
                // TODO Auto-generated constructor stub
        }


       public DatabaseHelper(Context context,String name,int version){       
                this(context, name,null,version);         //注意第三个参数NULL,可见这里实际上还是调用上面的构造函数。
        }

        public DatabaseHelper(Context context,String name){           
                this(context,name,VERSION);           //注意第三个VERSION,已经定义为1,所有实际上还是调用上面的构造函数。
        }

 

        //该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法
        @Override
        public void onCreate(SQLiteDatabase db) {
                // TODO Auto-generated method stub
                System.out.println("create a Database");
                //execSQL函数用于执行SQL语句
                db.execSQL("create table user(id int,name varchar(20))");                  //创建表名为user,有两列,id  和  name 。
        }


        @Override
         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    //更新数据库的版本。
                    // TODO Auto-generated method stub
                      System.out.println("update a Database");
        }
}



3、数据库的实现方法:
先获得那几个按钮:

public class SQLiteActivity extends Activity {
    /** Called when the activity is first created. */

        private Button createButton;
        private Button insertButton;
        private Button updateButton;
        private Button updateRecordButton;
        private Button queryButton;

 @Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        createButton = (Button)findViewById(R.id.createDatabase);
        updateButton = (Button)findViewById(R.id.updateDatabase);
        insertButton = (Button)findViewById(R.id.insert);
        updateRecordButton = (Button)findViewById(R.id.update);
        queryButton = (Button)findViewById(R.id.query);

        //创建监听器
        createButton.setOnClickListener(new CreateListener());
        updateButton.setOnClickListener(new UpdateListener());
        insertButton.setOnClickListener(new InsertListener());
        updateRecordButton.setOnClickListener(new UpdateRecordListener());
        queryButton.setOnClickListener(new QueryListener());
    }


4、写监听器:

class CreateListener implements OnClickListener{     //创建数据库。当执行dbHelper.getReadableDatabase();时,就会执行数据库类里面的oncreate函数,就会创建一个表了。从adb里面看 data/data/里面包名,里面就会产生一个databases文件夹,里面就有一个test_mars_db 数据库文件
        @Override
        public void onClick(View v) {
        //创建一个DatabaseHelper对象
        DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");
        //只有调用了DatabaseHelper对象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,才会创建,或打开一个数据库
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        }
}


class UpdateListener implements OnClickListener{     //更新数据库版本
        @Override
        public void onClick(View v) {
                DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);
               //这里调用了数据库类里面的 public DatabaseHelper(Context context,String name,int version) 构造函数。数据库版本改成了2.     

                SQLiteDatabase db = dbHelper.getReadableDatabase();
        }
   
}



class InsertListener implements OnClickListener{           //数据库插入操作
        @Override
        public void onClick(View v) {
                //生成ContentValues对象
                ContentValues values = new ContentValues();
                //想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致
                values.put("id", 1);
                values.put("name","zhangsan");

                DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);
                SQLiteDatabase db = dbHelper.getWritableDatabase();

                //调用insert方法,就可以将数据插入到数据库当中
                db.insert("user", null, values);
       }
}


//更新操作就相当于执行SQL语句当中的update语句  UPDATE table_name SET XXCOL=XXX WHERE XXCOL=XX...
class UpdateRecordListener implements OnClickListener{             //更新数据库里面的内容。
        @Override
        public void onClick(View arg0) {
                // TODO Auto-generated method stub
                //得到一个可写的SQLiteDatabase对象
                DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("name", "zhangsanfeng");

                //第一个参数是要更新的表名  //第二个参数是一个ContentValeus对象   //第三个参数是where子句
                db.update("user", values, "id=?", new String[]{"1"});
        }
}


class QueryListener implements OnClickListener{         //查询数据库内容
        @Override
        public void onClick(View v) {
                System.out.println("aaa------------------");
                Log.d("myDebug", "myFirstDebugMsg");

                DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");
                SQLiteDatabase db = dbHelper.getReadableDatabase();

                Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
                while(cursor.moveToNext()){
                        String name = cursor.getString(cursor.getColumnIndex("name"));
                        System.out.println("query--->" + name);
                }
           }
}



mars视频教程ppt和代码01_16_src.zip









阅读(856) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~