精华内容
下载资源
问答
  • sqlite数据库实例
  • DatabaseOpenHelper.java: [code="java"] ... ...import android.content.Context;...import android.database.sqlite.SQLiteDatabase;...import android.database.sqlite.SQLiteOpenHelper...
    DatabaseOpenHelper.java:

    package com.iaiai.activity;

    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;

    public class DatabaseOpenHelper extends SQLiteOpenHelper {

    private static final String DBNAME = "iaiai"; // 数据库名子

    private static final int VERSION = 1; // 版本

    public DatabaseOpenHelper(Context context) {
    // 第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类
    super(context, DBNAME, null, VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    // 创建表
    db.execSQL("CREATE TABLE ADMIN (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME VARCHAR(50), PHONE VARCHAR(20))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // 升级更新
    db.execSQL("DROP TABLE IF EXISTS ADMIN");
    onCreate(db);
    }

    }

    IaiaiActivity.java类:

    package com.iaiai.activity;

    import android.app.Activity;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.util.Log;

    public class IaiaiActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    DatabaseOpenHelper databaseOpenHelper = new DatabaseOpenHelper(this);
    databaseOpenHelper.getWritableDatabase().execSQL(
    "insert into ADMIN(name, phone) values (?, ?)",
    new Object[] { "用户名1", "111111" });

    Cursor cursor = databaseOpenHelper.getReadableDatabase().query("ADMIN",
    new String[] { "count(*)" }, null, null, null, null, null);
    if (cursor.moveToNext()) {
    Log.i("******************SQL", "总记录数:" + cursor.getLong(0));
    }

    // cursor = databaseOpenHelper.getReadableDatabase().rawQuery("select ID,NAME,PHONE from ADMIN where id=?",
    // new String[]{String.valueOf(1)});
    cursor = databaseOpenHelper.getReadableDatabase().query("ADMIN",null, null, null, null, null, null);
    while(cursor.moveToNext()){
    int adminId = cursor.getInt(0);
    String name = cursor.getString(1);
    String phone = cursor.getString(2);
    Log.i("******************数据"+adminId, "NAME:" + name+"----PHONE:"+phone);
    }
    }
    }


    只写了最简单的创建数据库,和添加查询数据,其它方法都很简单,这里不再写了。

    运行结果:
    [img]http://dl.iteye.com/upload/attachment/496944/84a8a8e6-ac58-3a11-a33f-44f5b393a680.jpg[/img]
    展开全文
  • Android 操作SQLite数据库实例
  • 安卓 SQLite数据库操作实例

    千次阅读 2016-10-19 09:04:42
    安卓 SQLite数据库操作实例 安卓SQLite数据库JUnit 前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了。在Android 运行时环境包含了完整的 SQLite。首先介绍一下SQLite这个...

    安卓 SQLite数据库操作实例
    安卓SQLite数据库JUnit

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了。

    在Android 运行时环境包含了完整的 SQLite。

    首先介绍一下SQLite这个数据库:

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

    有一点相对其他数据库来说比较特殊的是:SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中,意思就是说话你可以在创建数据库表的时候任意定义数据类型,却不影响实际使用时的数据存储。

    举个例子说就是你可以在创建表时定义username字段为varchar类型,但是实时使用时你可以向这个字段存入1、2.5、2012-6-6.。。这样的整型,单精,以及时间等其他类型,在SQLite里没有这种限制。

    但是有一种情况例外:当字段类型为 ”Integer Primary Key” 时,就是定义表主键,这个就只能是integer类型。和普通数据库相同 。

    SQLite 不支持一些标准的 SQL 功能,特别是外键约束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 还有一些 ALTER TABLE 功能。

    需要注意一点: SQLite不支持存储过程!

    我这里就简单介绍,如需要可自行去了解关于SQLite的更多知识,

    然后是我的Demo(一个简单的完成数据库增删查改操作):

    首先是项目目录结构:

    在本项目中我们使用JUnit测试,就要在AndroidManifest.xml配置JUnit

    AndroidManifest.xml 
    

    Java代码 收藏代码

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
        package="org.yzsoft.sqlitedemo.test"  
        android:versionCode="1"  
        android:versionName="1.0" >  
    
        <!-- 为了方便测试,我直接把上面包位置改成我项目的测试包下 -->  
        <uses-sdk  
            android:minSdkVersion="8"  
            android:targetSdkVersion="15" />  
    
        <application  
            android:icon="@drawable/ic_launcher"  
            android:label="@string/app_name"  
            android:theme="@style/AppTheme" >  
    
            <!--  
      因为我们开发项目的时候,包会比较多,所以最好在下面这个activity的配置(  android:name="org.yzsoft.sqlitedemo.activity.MainActivity" )这句这里打上完整的    包名.类名   
      ,虽然可以直接用  .类名,但是这个.类名是建立在  
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="org.yzsoft.sqlitedemo.test"   
      之上的,用package+.类名也刚好可以组合成完整路径。但是我们保险一点写完整去。   
            -->  
            <activity  
                android:name="org.yzsoft.sqlitedemo.activity.MainActivity"  
                android:label="@string/title_activity_main" >  
                <intent-filter>  
                    <action android:name="android.intent.action.MAIN" />  
    
                    <category android:name="android.intent.category.LAUNCHER" />  
                </intent-filter>  
            </activity>  
            <!-- JUnit要加这句 -->  
            <uses-library android:name="android.test.runner" />  
        </application>  
        <!-- JUnit还要加这段 (android:targetPackage测试类所在包名 ) -->  
        <instrumentation  
            android:name="android.test.InstrumentationTestRunner"  
            android:label="Test Unit Tests"  
            android:targetPackage="org.yzsoft.sqlitedemo.test" >  
        </instrumentation>  
    
    </manifest>  
    

    1、MainActivity.java(因为本项目中使用JUnit进行测试,就不需要Activity了,留着不用写它)

    Java代码 收藏代码

    package org.yzsoft.sqlitedemo.activity;  
    
    import org.yzsoft.sqlitedemo.util.R;  
    import org.yzsoft.sqlitedemo.util.R.layout;  
    import org.yzsoft.sqlitedemo.util.R.menu;  
    
    import android.os.Bundle;  
    import android.app.Activity;  
    import android.view.Menu;  
    
    public class MainActivity extends Activity {  
    
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
        }  
    
        @Override  
        public boolean onCreateOptionsMenu(Menu menu) {  
            getMenuInflater().inflate(R.menu.activity_main, menu);  
            return true;  
        }  
    }  
    

    2、DBOpenHandler.java

    Java代码 收藏代码

    package org.yzsoft.sqlitedemo.util;  
    
    import android.content.Context;  
    import android.database.sqlite.SQLiteDatabase;  
    import android.database.sqlite.SQLiteDatabase.CursorFactory;  
    import android.database.sqlite.SQLiteOpenHelper;  
    
    public class DBOpenHandler extends SQLiteOpenHelper {  
    
        /** 
         *  
         * @param context 
         *            上下文 
         * @param name 
         *            数据库名 
         * @param factory 
         *            可选的数据库游标工厂类,当查询(query)被提交时,该对象会被调用来实例化一个游标。默认为null。 
         * @param version 
         *            数据库版本号 
         */  
        public DBOpenHandler(Context context, String name, CursorFactory factory, int version) {  
            super(context, name, factory, version);  
        }  
    
        @Override  
        public void onCreate(SQLiteDatabase db) {// 覆写onCreate方法,当数据库创建时就用SQL命令创建一个表  
            // 创建一个t_users表,id主键,自动增长,字符类型的username和pass;  
            db.execSQL("create table t_users(id integer primary key autoincrement,username varchar(200),pass varchar(200) )");  
    
        }  
    
        @Override  
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
            // TODO Auto-generated method stub  
    
        }  
    
    }  
    

    3、TUsers.java(实体类,习惯了WEB开发,总会加个实体类,方便)

    Java代码 收藏代码

    package org.yzsoft.sqlitedemo.vo;  
    
    public class TUsers {  
    private int id ;  
    private String username;  
    private String pass;  
    public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getUsername() {  
        return username;  
    }  
    public void setUsername(String username) {  
        this.username = username;  
    }  
    public String getPass() {  
        return pass;  
    }  
    public void setPass(String pass) {  
        this.pass = pass;  
    }  
    }  
    

    4、SQLiteDAOImpl.java(数据库操作实现类)

    Java代码 收藏代码

    package org.yzsoft.sqlitedemo.util;  
    
    import java.util.ArrayList;  
    import java.util.List;  
    import org.yzsoft.sqlitedemo.vo.TUsers;  
    
    import android.content.Context;  
    import android.database.Cursor;  
    import android.database.sqlite.SQLiteDatabase;  
    
    public class SQLiteDAOImpl {  
        private DBOpenHandler dbOpenHandler;  
    
        public SQLiteDAOImpl(Context context) {  
            this.dbOpenHandler = new DBOpenHandler(context, "dbtest.db", null, 1);  
        }  
    
        public void save(TUsers tusers) {// 插入记录  
            SQLiteDatabase db = dbOpenHandler.getWritableDatabase();// 取得数据库操作  
            db.execSQL("insert into t_users (username,pass) values(?,?)", new Object[] { tusers.getUsername(), tusers.getPass() });  
            db.close();// 记得关闭数据库操作  
        }  
    
        public void delete(Integer id) {// 删除纪录  
            SQLiteDatabase db = dbOpenHandler.getWritableDatabase();  
            db.execSQL("delete from t_users where id=?", new Object[] { id.toString() });  
            db.close();  
        }  
    
        public void update(TUsers tusers) {// 修改纪录  
            SQLiteDatabase db = dbOpenHandler.getWritableDatabase();  
            db.execSQL("update t_users set username=?,pass=? where" + " id=?", new Object[] { tusers.getUsername(), tusers.getPass(), tusers.getId() });  
            db.close();  
        }  
    
        public TUsers find(Integer id) {// 根据ID查找纪录  
            TUsers tusers = null;  
            SQLiteDatabase db = dbOpenHandler.getReadableDatabase();  
            // 用游标Cursor接收从数据库检索到的数据  
            Cursor cursor = db.rawQuery("select * from t_users where id=?", new String[] { id.toString() });  
            if (cursor.moveToFirst()) {// 依次取出数据  
                tusers = new TUsers();  
                tusers.setId(cursor.getInt(cursor.getColumnIndex("id")));  
                tusers.setUsername(cursor.getString(cursor.getColumnIndex("username")));  
                tusers.setPass(cursor.getString(cursor.getColumnIndex("pass")));  
    
            }  
            db.close();  
            return tusers;  
        }  
    
        public List<TUsers> findAll() {// 查询所有记录  
            List<TUsers> lists = new ArrayList<TUsers>();  
            TUsers tusers = null;  
            SQLiteDatabase db = dbOpenHandler.getReadableDatabase();  
            // Cursor cursor=db.rawQuery("select * from t_users limit ?,?", new  
            // String[]{offset.toString(),maxLength.toString()});  
            // //这里支持类型MYSQL的limit分页操作  
    
            Cursor cursor = db.rawQuery("select * from t_users ", null);  
            while (cursor.moveToNext()) {  
                tusers = new TUsers();  
                tusers.setId(cursor.getInt(cursor.getColumnIndex("id")));  
                tusers.setUsername(cursor.getString(cursor.getColumnIndex("username")));  
                tusers.setPass(cursor.getString(cursor.getColumnIndex("pass")));  
                lists.add(tusers);  
            }  
            db.close();  
            return lists;  
        }  
    
        public long getCount() {//统计所有记录数  
            SQLiteDatabase db = dbOpenHandler.getReadableDatabase();  
            Cursor cursor = db.rawQuery("select count(*) from t_users ", null);  
            cursor.moveToFirst();  
            db.close();  
            return cursor.getLong(0);  
        }  
    
    }  
    

    5、TUsersTest.java(JUnit测试类)

    Java代码 收藏代码

    package org.yzsoft.sqlitedemo.test;  
    
    import java.util.List;  
    
    import org.yzsoft.sqlitedemo.util.DBOpenHandler;  
    import org.yzsoft.sqlitedemo.util.SQLiteDAOImpl;  
    import org.yzsoft.sqlitedemo.vo.TUsers;  
    
    import android.test.AndroidTestCase;  
    import android.util.Log;  
    
    public class TUsersTest extends AndroidTestCase {  
        private static final String TAG = "这个是测试类";// 准备好TAG标识用于LOG输出,方便我们用LogCat进行调试  
    
        public void testCreate() {  
            DBOpenHandler dbHandler = new DBOpenHandler(this.getContext(), "dbtest.db", null, 1);// 创建数据库文件  
            dbHandler.getWritableDatabase();  
        }  
    
        public void testSave() throws Throwable {  
            SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());  
            TUsers tuser = new TUsers();  
            tuser.setUsername("用户");  
            tuser.setPass("密码");  
            p.save(tuser);  
            Log.i(TAG, "插入成功");// 用日志记录一个我们自定义的输出。可以在LogCat窗口中查看,方便调试  
        }  
    
        public void testUpate() throws Throwable {  
            SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());  
            TUsers tuser = p.find(1);  
            tuser.setUsername("张三");  
            p.update(tuser);  
            Log.i(TAG, "修改成功");  
        }  
    
        public void testDelete() throws Throwable {  
            SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());  
            p.delete(2);  
            Log.i(TAG, "删除成功");  
        }  
    
        public void testFind() throws Throwable {  
            SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());  
            TUsers tuser = p.find(1);  
            Log.i(TAG, tuser.getUsername() + "   用户名");  
        }  
    
        public void testGetCount() throws Throwable {  
            SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());  
            Log.i(TAG, p.getCount() + "   总记录数");  
        }  
    
        public void testFindAll() throws Throwable {  
            SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());  
            List<TUsers> tusers = p.findAll();  
            for (TUsers tuser : tusers) {  
                Log.i(TAG, tuser.getUsername() + "   用户名");  
            }  
        }  
    }  
    
    展开全文
  • 主要介绍了Android编程操作嵌入式关系型SQLite数据库的方法,结合实例形式较为详细的分析了Android操作SQLite数据库的基本技巧与相关注意事项,需要的朋友可以参考下
  • Android SQLite数据库相关实例源码,代码中的每一个intent都会带一个Bundle型的extras数据。需要对position和id进行一个很好的区分。position指的是点击的这个ViewItem在当前ListView中的位置,每一个和ViewItem绑定...
  • Android为了操作SQlite数据库,提供了SQLiteDatabase类,其内封装了insert 、delete、update 、query 、执行SQL命令等操作。同时又为SQLiteDatabase提供了一个辅助类,SQLiteOpenHelper。它提供了两个重要的方法,...
  • AndroidSQLite数据库实例

    千次阅读 2017-02-13 16:05:37
    package com.sqlite.sqlite;import android.content.ContentValues; import android.content.Context; import android.database.Cursor;...import android.database.sqlite.SQLiteDatabase; import android.database.sq
    package com.sqlite.sqlite;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    
    /**
     * Created by lingyue on 2017/2/9.
     * 希望能做成一个通用的数据库应用模板
     */
    
    public class DatabaseHelper extends SQLiteOpenHelper {
    
    //    数据库名称
        private static final String DB_NAME = "customer.db";
    //    表名
        private static final String DB_TABLE = "customer";
    //    声明SQLite对象
        private SQLiteDatabase db;
        private static final String DATABASE_CREATE = "create table customer(_id integer primary key autoincrement," +
                "name integer not null," +
                "password integer not null)";
    
        public DatabaseHelper(Context context){
            super(context,DB_NAME,null,2);
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            this.db = db;
            db.execSQL(DATABASE_CREATE);
        }
    
    //    插入
        public void insert(ContentValues values){
            SQLiteDatabase db = getWritableDatabase();
            db.insert(DB_TABLE, null, values);
            db.close();
        }
    
    //    查询
        public String cheak(String Spassword){
            SQLiteDatabase db = getWritableDatabase();
    
            Cursor cursor = db.rawQuery("select * from customer", null);
    
            while ((cursor.moveToNext()) && (!Spassword.equals(cursor.getString(1)))) {
    
                int _id = cursor.getInt(0); //获取第一列的值,第一列的索引从0开始
    
                String name = cursor.getString(1);//获取第二列的值
    
                String password = cursor.getString(2);//获取第三列的值
    
            }
            if (cursor.isAfterLast()){
                return "error";
            }
            else return cursor.getString(2);
    
    //        cursor.close();
    //        db.close();
    
    
        }
        public Cursor query(){
            SQLiteDatabase db = getWritableDatabase();
            Cursor cursor = db.query(DB_TABLE,null,null,null,null,null,null);
            return cursor;
        }
    
    //    关闭数据库
        public void close(){
            if (db!=null)
                db.close();
        }
        @Override
        public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    
        }
    }
    
    展开全文
  • userDBHelper.delete("_id=12");
  • 这是一个比较完整的类淘宝应用,使用sqlite数据库展示商品并控制购物车和历史记录,可直接运行代码看到效果
  • package com.example.db; public class People { public int ID = -1; public String Name; public int Age; public float Height; @Override public String toString(){ String result = "";...}
  • 安卓 SQLite数据库操作实例

    千次阅读 2012-11-21 08:31:25
    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了。 在Android 运行时环境包含了完整的 SQLite。 首先介绍一下SQLite这个数据库:   SQLite,是一款轻型的数据库,是...

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了。

    在Android 运行时环境包含了完整的 SQLite。

    首先介绍一下SQLite这个数据库:

     

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

     

    有一点相对其他数据库来说比较特殊的是:SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中,意思就是说话你可以在创建数据库表的时候任意定义数据类型,却不影响实际使用时的数据存储。

     

    举个例子说就是你可以在创建表时定义username字段为varchar类型,但是实时使用时你可以向这个字段存入1、2.5、2012-6-6.。。这样的整型,单精,以及时间等其他类型,在SQLite里没有这种限制。

     

    但是有一种情况例外:当字段类型为  ”Integer Primary Key” 时,就是定义表主键,这个就只能是integer类型。和普通数据库相同 。

     

    SQLite 不支持一些标准的 SQL 功能,特别是外键约束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 还有一些 ALTER TABLE 功能。

     

     

    需要注意一点: SQLite不支持存储过程!

     

    我这里就简单介绍,如需要可自行去了解关于SQLite的更多知识,

     

    然后是我的Demo(一个简单的完成数据库增删查改操作):

     

    首先是项目目录结构:


     

     

     

    在本项目中我们使用JUnit测试,就要在AndroidManifest.xml配置JUnit

     

        AndroidManifest.xml 

     

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="org.yzsoft.sqlitedemo.test"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <!-- 为了方便测试,我直接把上面包位置改成我项目的测试包下 -->
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="15" />
    
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
    
            <!--
      因为我们开发项目的时候,包会比较多,所以最好在下面这个activity的配置(  android:name="org.yzsoft.sqlitedemo.activity.MainActivity" )这句这里打上完整的    包名.类名 
      ,虽然可以直接用  .类名,但是这个.类名是建立在
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="org.yzsoft.sqlitedemo.test" 
      之上的,用package+.类名也刚好可以组合成完整路径。但是我们保险一点写完整去。 
            -->
            <activity
                android:name="org.yzsoft.sqlitedemo.activity.MainActivity"
                android:label="@string/title_activity_main" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <!-- JUnit要加这句 -->
            <uses-library android:name="android.test.runner" />
        </application>
        <!-- JUnit还要加这段 (android:targetPackage测试类所在包名 ) -->
        <instrumentation
            android:name="android.test.InstrumentationTestRunner"
            android:label="Test Unit Tests"
            android:targetPackage="org.yzsoft.sqlitedemo.test" >
        </instrumentation>
    
    </manifest>
     

     

     

     

    1、MainActivity.java(因为本项目中使用JUnit进行测试,就不需要Activity了,留着不用写它)

     

     

    package org.yzsoft.sqlitedemo.activity;
    
    import org.yzsoft.sqlitedemo.util.R;
    import org.yzsoft.sqlitedemo.util.R.layout;
    import org.yzsoft.sqlitedemo.util.R.menu;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    
    public class MainActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
    }
    
     

     

     

     

    2、DBOpenHandler.java

     

     

    package org.yzsoft.sqlitedemo.util;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    
    public class DBOpenHandler extends SQLiteOpenHelper {
    
    	/**
    	 * 
    	 * @param context
    	 *            上下文
    	 * @param name
    	 *            数据库名
    	 * @param factory
    	 *            可选的数据库游标工厂类,当查询(query)被提交时,该对象会被调用来实例化一个游标。默认为null。
    	 * @param version
    	 *            数据库版本号
    	 */
    	public DBOpenHandler(Context context, String name, CursorFactory factory, int version) {
    		super(context, name, factory, version);
    	}
    
    	@Override
    	public void onCreate(SQLiteDatabase db) {// 覆写onCreate方法,当数据库创建时就用SQL命令创建一个表
    		// 创建一个t_users表,id主键,自动增长,字符类型的username和pass;
    		db.execSQL("create table t_users(id integer primary key autoincrement,username varchar(200),pass varchar(200) )");
    
    	}
    
    	@Override
    	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    		// TODO Auto-generated method stub
    
    	}
    
    }
    
     

     

    3、TUsers.java(实体类,习惯了WEB开发,总会加个实体类,方便)

     

     

    package org.yzsoft.sqlitedemo.vo;
    
    public class TUsers {
    private int id ;
    private String username;
    private String pass;
    public int getId() {
    	return id;
    }
    public void setId(int id) {
    	this.id = id;
    }
    public String getUsername() {
    	return username;
    }
    public void setUsername(String username) {
    	this.username = username;
    }
    public String getPass() {
    	return pass;
    }
    public void setPass(String pass) {
    	this.pass = pass;
    }
    }
    
     

     

    4、SQLiteDAOImpl.java(数据库操作实现类)

     

     

    package org.yzsoft.sqlitedemo.util;
    
    import java.util.ArrayList;
    import java.util.List;
    import org.yzsoft.sqlitedemo.vo.TUsers;
    
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    
    public class SQLiteDAOImpl {
    	private DBOpenHandler dbOpenHandler;
    
    	public SQLiteDAOImpl(Context context) {
    		this.dbOpenHandler = new DBOpenHandler(context, "dbtest.db", null, 1);
    	}
    
    	public void save(TUsers tusers) {// 插入记录
    		SQLiteDatabase db = dbOpenHandler.getWritableDatabase();// 取得数据库操作
    		db.execSQL("insert into t_users (username,pass) values(?,?)", new Object[] { tusers.getUsername(), tusers.getPass() });
    		db.close();// 记得关闭数据库操作
    	}
    
    	public void delete(Integer id) {// 删除纪录
    		SQLiteDatabase db = dbOpenHandler.getWritableDatabase();
    		db.execSQL("delete from t_users where id=?", new Object[] { id.toString() });
    		db.close();
    	}
    
    	public void update(TUsers tusers) {// 修改纪录
    		SQLiteDatabase db = dbOpenHandler.getWritableDatabase();
    		db.execSQL("update t_users set username=?,pass=? where" + " id=?", new Object[] { tusers.getUsername(), tusers.getPass(), tusers.getId() });
    		db.close();
    	}
    
    	public TUsers find(Integer id) {// 根据ID查找纪录
    		TUsers tusers = null;
    		SQLiteDatabase db = dbOpenHandler.getReadableDatabase();
    		// 用游标Cursor接收从数据库检索到的数据
    		Cursor cursor = db.rawQuery("select * from t_users where id=?", new String[] { id.toString() });
    		if (cursor.moveToFirst()) {// 依次取出数据
    			tusers = new TUsers();
    			tusers.setId(cursor.getInt(cursor.getColumnIndex("id")));
    			tusers.setUsername(cursor.getString(cursor.getColumnIndex("username")));
    			tusers.setPass(cursor.getString(cursor.getColumnIndex("pass")));
    
    		}
    		db.close();
    		return tusers;
    	}
    
    	public List<TUsers> findAll() {// 查询所有记录
    		List<TUsers> lists = new ArrayList<TUsers>();
    		TUsers tusers = null;
    		SQLiteDatabase db = dbOpenHandler.getReadableDatabase();
    		// Cursor cursor=db.rawQuery("select * from t_users limit ?,?", new
    		// String[]{offset.toString(),maxLength.toString()});
    		// //这里支持类型MYSQL的limit分页操作
    
    		Cursor cursor = db.rawQuery("select * from t_users ", null);
    		while (cursor.moveToNext()) {
    			tusers = new TUsers();
    			tusers.setId(cursor.getInt(cursor.getColumnIndex("id")));
    			tusers.setUsername(cursor.getString(cursor.getColumnIndex("username")));
    			tusers.setPass(cursor.getString(cursor.getColumnIndex("pass")));
    			lists.add(tusers);
    		}
    		db.close();
    		return lists;
    	}
    
    	public long getCount() {//统计所有记录数
    		SQLiteDatabase db = dbOpenHandler.getReadableDatabase();
    		Cursor cursor = db.rawQuery("select count(*) from t_users ", null);
    		cursor.moveToFirst();
    		db.close();
    		return cursor.getLong(0);
    	}
    
    }
    
     

     

     

    5、TUsersTest.java(JUnit测试类)

     

     

    package org.yzsoft.sqlitedemo.test;
    
    import java.util.List;
    
    import org.yzsoft.sqlitedemo.util.DBOpenHandler;
    import org.yzsoft.sqlitedemo.util.SQLiteDAOImpl;
    import org.yzsoft.sqlitedemo.vo.TUsers;
    
    import android.test.AndroidTestCase;
    import android.util.Log;
    
    public class TUsersTest extends AndroidTestCase {
    	private static final String TAG = "这个是测试类";// 准备好TAG标识用于LOG输出,方便我们用LogCat进行调试
    
    	public void testCreate() {
    		DBOpenHandler dbHandler = new DBOpenHandler(this.getContext(), "dbtest.db", null, 1);// 创建数据库文件
    		dbHandler.getWritableDatabase();
    	}
    
    	public void testSave() throws Throwable {
    		SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());
    		TUsers tuser = new TUsers();
    		tuser.setUsername("用户");
    		tuser.setPass("密码");
    		p.save(tuser);
    		Log.i(TAG, "插入成功");// 用日志记录一个我们自定义的输出。可以在LogCat窗口中查看,方便调试
    	}
    
    	public void testUpate() throws Throwable {
    		SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());
    		TUsers tuser = p.find(1);
    		tuser.setUsername("张三");
    		p.update(tuser);
    		Log.i(TAG, "修改成功");
    	}
    
    	public void testDelete() throws Throwable {
    		SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());
    		p.delete(2);
    		Log.i(TAG, "删除成功");
    	}
    
    	public void testFind() throws Throwable {
    		SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());
    		TUsers tuser = p.find(1);
    		Log.i(TAG, tuser.getUsername() + "   用户名");
    	}
    
    	public void testGetCount() throws Throwable {
    		SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());
    		Log.i(TAG, p.getCount() + "   总记录数");
    	}
    
    	public void testFindAll() throws Throwable {
    		SQLiteDAOImpl p = new SQLiteDAOImpl(this.getContext());
    		List<TUsers> tusers = p.findAll();
    		for (TUsers tuser : tusers) {
    			Log.i(TAG, tuser.getUsername() + "   用户名");
    		}
    	}
    }
    
     

    然后是测试中的一些截图:

     




     

     

     

     

     

     

    最后我们把File Exploer中data/data/项目包名/databases/dbtest.db 导出来,用Navicat Premium等数据库管理工具查看里面的数据:


     

    导出来看看:


     

    虽然安卓平台中SQLite是个小型的本地数据库,但是有些地方使用起来会比文件存储更方便,本文只是对它作一个简单的操作实例 ,有这方面兴趣的童鞋可以自己去深入研究。也希望大家能多交流交流~~~~

     

     

    最最后~附上项目源码:

     

     

     

     

    展开全文
  • android连接sqlite数据库实例

    千次阅读 2014-12-02 21:19:38
    1.首先在MainActivity类里定义一个内部类,该类继承自SQLiteOpenHelper,之后就通过该类对象来对数据库进行增删改查: private static class DatabaseHelper extends SQLiteOpenHelper { public ...
  • AndroidSQLite数据库实例之备忘录

    千次阅读 2017-03-04 23:02:15
    该程序实现备忘录功能,用于记录生活中的一些重要事情,并提供查询功能,可以按条件进行模糊查询。 时间关系,先一部分 public void onClick(View view) { Calendar c = Calendar.getInstance();...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,716
精华内容 9,086
关键字:

安卓sqlite数据库实例