SQLiteDatabase

package com.demo.database;

import java.io.File;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

public class main extends Activity {
    /** Called when the activity is first created. */
    private ListView lv = null;
    private TextView tv=null;
    private SQLiteDatabase mSQLiteDatabase = null;
    private SQLiteStatement st=null;
    private static final String DATABASE_NAME = "Test.db";
    private static final String TABLE_NAME = "table_test";
    private static final String COLUMN_ID = "_id";// INTEGER PRIMARY KEY
    private static final String COLUMN_NAME = "name";// TEXT
    private static final String COLUMN_AGE = "age";// INTEGER
    private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS "
            + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY,"
            + COLUMN_NAME + " TEXT," + COLUMN_AGE + " INTEGER)";
	private File path = new File("/sdcard/myfile");// 创建目录
	private File f = new File("/sdcard/myfile/test.db");// 创建文件

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lv = (ListView) this.findViewById(R.id.ListView01);
        tv = (TextView) this.findViewById(R.id.counttip);
        try {
           // mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME,
           //         Activity.MODE_PRIVATE, null);
        	if (!path.exists()) {// 目录存在返回false
    			path.mkdirs();// 创建一个目录
    		}
    		if (!f.exists())f.createNewFile();//创建文件
    		mSQLiteDatabase=SQLiteDatabase.openOrCreateDatabase(f, null); 

        } catch (Exception ex) {
            this.ShowDialog("打开或者创建数据库异常:" + ex.getMessage());
        }
        try {
            mSQLiteDatabase.execSQL(CREATE_TABLE);
            String str = "INSERT INTO " + TABLE_NAME + " (" + COLUMN_NAME + ","
            + COLUMN_AGE + ")VALUES(?,?)";
             st= mSQLiteDatabase.compileStatement(str);
        } catch (Exception ex) {
            this.ShowDialog("创建表异常:" + ex.getMessage());
        }
         this.InsertData3();
         this.InsertData4();
//         this.InsertData2();
//         this.AddData();
         this.UpdateData();
        // this.UpdateData2();
        // this.UpdateData3();
        // this.DeleteData();
        // this.DeleteData2();
        // this.DeleteData3();
        this.SelectData();
    }   

    @Override
    protected void onPause() {
        super.onPause();
        mSQLiteDatabase.close();// 关闭数据库
    }   

    /**
     * 插入数据-execSQL
     */
    private void InsertData() {
        try {
            String str = "INSERT INTO " + TABLE_NAME + " (" + COLUMN_NAME + ","
                    + COLUMN_AGE + ")VALUES('张三',30)";
            mSQLiteDatabase.execSQL(str);
        } catch (Exception ex) {
            this.ShowDialog("插入数据异常:" + ex.getMessage());
        }   

    }   

    /**
     * 插入数据-execSQL
     */
    private void InsertData2() {
        try {
            String str = "INSERT INTO " + TABLE_NAME + " (" + COLUMN_NAME + ","
                    + COLUMN_AGE + ")VALUES(?,?)";
            Object[] ob = new Object[] { "王五", 50 };
            mSQLiteDatabase.execSQL(str, ob);
        } catch (Exception ex) {
            this.ShowDialog("插入数据异常:" + ex.getMessage());
        }
    }
    /**
     * 利用statement插入数据-execSQL
     */
    private void InsertData3() { 

        try { 

           st.bindString(1, "王阳");
           st.bindLong(2, 50);
            st.execute();

            //mSQLiteDatabase.execSQL(str, ob);
        } catch (Exception ex) {
            this.ShowDialog("插入数据异常:" + ex.getMessage());
        }
    }
    /**
     * 利用statement插入数据-execSQL
     */
    private void InsertData4() { 

        try { 

           st.bindString(1, "周军");
           st.bindLong(2, 33);
            st.execute();

            //mSQLiteDatabase.execSQL(str, ob);
        } catch (Exception ex) {
            this.ShowDialog("插入数据异常:" + ex.getMessage());
        }
    }   

    /**
     * 插入数据-insert() nullColumnHack,这个参数需要传入一个列名。SQL标准并不允许插入所有列均为空的一行数据,
     * 所以当传入的initialValues值为空或者为0时
     * ,用nullColumnHack参数指定的列会被插入值为NULL的数据,然后再将此行插入到表中。
     */
    private void AddData() {
        try {
            ContentValues cv = new ContentValues();
            cv.put(COLUMN_NAME, "李四");
            cv.put(COLUMN_AGE, 40);
            // long num = mSQLiteDatabase.insert(TABLE_NAME, COLUMN_NAME, cv);
            long num = mSQLiteDatabase.insertOrThrow(TABLE_NAME, null, cv);
            this.setTitle("num==" + num);
        } catch (Exception ex) {
            this.ShowDialog("插入数据异常:" + ex.getMessage());
        }   

    }   

    /**
     * 更新数据
     */
    private void UpdateData() {
        try {
            String str = "UPDATE " + TABLE_NAME + " SET " + COLUMN_AGE
                    + " = 25 WHERE _id=1";
            mSQLiteDatabase.execSQL(str);
        } catch (Exception ex) {
            this.ShowDialog("更新数据异常:" + ex.getMessage());
        }
    }   

    /**
     * 更新数据
     */
    private void UpdateData2() {
        try {
            String str = "UPDATE " + TABLE_NAME + " SET " + COLUMN_AGE
                    + " = ? WHERE _id=?";
            Object[] Ob = new Object[] { 33, 2 };
            mSQLiteDatabase.execSQL(str, Ob);
        } catch (Exception ex) {
            this.ShowDialog("更新数据异常:" + ex.getMessage());
        }
    }   

    /**
     * 更新数据
     */
    private void UpdateData3() {
        try {
            ContentValues cv = new ContentValues();
            cv.put(COLUMN_NAME, "李四4");
            cv.put(COLUMN_AGE, 43);
            int num = mSQLiteDatabase.update(TABLE_NAME, cv,
                    COLUMN_NAME + "=?", new String[] { "李四" });
            this.setTitle("修改行数num=" + num);
        } catch (Exception ex) {
            this.ShowDialog("更新数据异常:" + ex.getMessage());
        }
    }   

    /**
     * 删除数据
     */
    private void DeleteData() {
        try {
            String str = "DELETE FROM " + TABLE_NAME + " WHERE _id=3";
            mSQLiteDatabase.execSQL(str);
        } catch (Exception ex) {
            this.ShowDialog("删除数据异常:" + ex.getMessage());
        }
    }   

    /**
     * 删除数据
     */
    private void DeleteData2() {
        try {
            String str = "DELETE FROM " + TABLE_NAME + " WHERE _id=?";
            mSQLiteDatabase.execSQL(str, new Object[] { 2 });
        } catch (Exception ex) {
            this.ShowDialog("删除数据异常:" + ex.getMessage());
        }
    }   

    /**
     * 删除数据
     */
    private void DeleteData3() {
        try {
            int num = mSQLiteDatabase.delete(TABLE_NAME, "_id=1", null);
            this.setTitle("删除行数num=" + num);
        } catch (Exception ex) {
            this.ShowDialog("删除数据异常:" + ex.getMessage());
        }
    }   

    /**
     * 查询数据
     */
    private void SelectData() {
        try {
            String sql = "SELECT * FROM " + TABLE_NAME;
            Cursor cursor = mSQLiteDatabase.rawQuery(sql,null);
            // Cursor cursor = mSQLiteDatabase.query(TABLE_NAME, new String[] {
            // COLUMN_ID, COLUMN_NAME, COLUMN_AGE }, COLUMN_NAME + "=?",
            // new String[] { "李四" }, null, null, null);
            if (cursor != null) {
                ListAdapter adapter = new SimpleCursorAdapter(this,
                        R.layout.list, cursor, new String[] { COLUMN_ID,
                                COLUMN_NAME, COLUMN_AGE },
                        new int[] { R.id.TextView1, R.id.TextView2,
                                R.id.TextView3 });
                lv.setAdapter(adapter);   

                tv.setText(Integer.toString(cursor.getCount()));

            }
        } catch (Exception ex) {
            this.ShowDialog("查询数据异常:" + ex.getMessage());
        }
    }
    /**
     * 删除表
     */
    private void DropTable(){
        try{
            String sql = "DROP TABLE "+TABLE_NAME;
            mSQLiteDatabase.execSQL(sql);
        }catch(Exception ex){
            this.ShowDialog("删除表异常:"+ex.getMessage());
        }
    }
    /**
     * 删除数据库
     */
    private void DropDatabase(){
        try{
            this.deleteDatabase(DATABASE_NAME);
        }catch(Exception ex){
            this.ShowDialog("删除数据库异常:"+ex.getMessage());
        }
    }
    /**
     * 提示对话框
     * @param msg
     */
    private void ShowDialog(String msg) {
        new AlertDialog.Builder(this).setTitle("提示").setMessage(msg)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {   

                    @Override
                    public void onClick(DialogInterface dialog, int which) {   

                    }   

                }).show();
    }
}
时间: 2024-09-19 09:40:55

SQLiteDatabase的相关文章

android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第一部分)

使用嵌入式关系型SQLite数据库存储数据 除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite, 1.SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只有五种,但实际上sqlite3也接受varchar(n).char(n).decimal(p,s) 等数据类型,只不过在运算或保存

android-创建SQLiteDatabase对象时报错,空指针异常

问题描述 创建SQLiteDatabase对象时报错,空指针异常 我创建了一个SQLite,以及操作数据库的类,代码如下(这是数据库类)public class account extends SQLiteOpenHelper { private static final int VERSION = 1;// 定义数据库版本号 private static final String DBNAME = ""account.db"";// 定义数据库名 public a

android-Android SQLiteDatabase 中使用 like 查询

问题描述 Android SQLiteDatabase 中使用 like 查询 在名字表中有3个名字:Allakhazam Beatbox 和 Cunning public Cursor fetchNamesByConstraint(String filter) { mDb.query(true DATABASE_NAMES_TABLE new String[] { KEY_ROWID KEY_NAME } KEY_NAME + "" LIKE ?"" new St

adapter删除sqlite-database为空 求大神解决下呗

问题描述 database为空 求大神解决下呗 package com.wlh.app.notepad.adapter; import java.util.ArrayList; import com.wlh.app.notepad.modle.NotepdaBean; import com.wlh.app.notepad.util.db.MyDataBaseHelper; import android.content.Context; import android.database.sqlite

Androide SQLiteDatabase数据库操作(转)

SQLite可以解析大部分的标准SQL语句:建表语句:create table 表名(主键名 integer primary key autoincrement(设置为自增列),其他列名及属性)或(主键名 integer primary key )SQLite数据库中将所有声明为"integer primary key"的列自动识别为自增列.  查询语句:select * from 表名 where 条件子句 group by 分组子句 having-order by 排序子句 DES

SQLiteDatabase中query、insert、update、delete方法参数说明

SQLiteDataBase对象的query()接口: public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy,String limit) Query the given table, returning a Cursor over the result set. Para

SQLiteDatabase query 和 rawQuery 的区别

[java] view plain copy  print? <span style="font-size:12px;">Cursor cursor = db.rawQuery("select name from *** where id=?", new String[]{"1"});    Cursor cursor = db.query("***", new String[]{"name"}

解决sqlite死锁示例异常database is locked

/* * sqlite的连接方式实际上为单连接方式,即使实用多线程也是用的一个连接 * getWritableDatabase()和getReadableDatabase()都为synchronized方法,但不是static方法 * 所以都只对同一个对象起同步作用,对于不同的对象没有任何作用 * 所以使用sqlite的时候可以提供一个单一的入口,防止多对象修改数据库而造成死锁 * 所以可以提供一个static的instance对象+它的get方法, * 连接可一直挂着,即使多次调用getWri

[Android] SQLite的使用入门

概述 Android 也提供了几种方法用来保存数据,使得这些数据即使在程序结束以后依然不会丢失.这些方法有: 文本文件:  可以保存在应用程序自己的目录下,安装的每个app都会在/data/data/目录下创建个文件夹,名字和应用程序中AndroidManifest.xml文件中的package一样. SDcard保存: Preferences保存:  这也是一种经常使用的数据存储方法,因为它们对于用户而言是透明的,并且从应用安装的时候就存在了. Assets保存:  用来存储一些只读数据,As