设为首页 收藏本站
查看: 1504|回复: 0

[经验分享] Android菜鸟日记10 SQLite 数据库

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-1 08:37:09 | 显示全部楼层 |阅读模式
Android菜鸟日记10
SQLite

SQLite
1.作用:数据库操作
2.重点:
通过使用SQLiteOpenhelper(数据库助手)来创建数据库。
SQLiteOpenhelper的构造函数有4个参数;
(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
环境、数据库名、不知道、版本号
3.使用:  
1.首先创建一个集成SQLiteOpenhelper的类。覆写
public void onCreate(SQLiteDatabase db) {第一次获得数据对象时调用 一般用于创建数据表}
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {每次版本(version)更新数据库内容时调用}
public void onOpen(SQLiteDatabase db) {每次打开数据库是调用}
2.在activity使用SQLiteOpenhelper时
MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3",null,1);
//获得SQLiteOpenhelper对象(自己写的继承SQLiteOpenhelper的对象)。
SQLiteDatabase db=my.getReadableDatabase();
从SQLiteOpenhelper对象获得SQLiteDatabase对象。(第一次获取会调用SQLiteOpenhelper的 onCreate方法)

3.通过获得的SQLiteDatabase对象进行对数据的增删改查。

MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3");
//test3为数据库名
SQLiteDatabase db=my.getWritableDatabase();
ContentValues c= new ContentValues();
// ContentValues 类似于hashMap的东西,和bundle一样都是键为String。
//用于存储数据 他的键值为值需要放入的列名ContentValues.put(“列名”,值)
//值需要和生成数据表时的值匹配
c.put("id", i);
i++;
c.put("name", "poolo");
Random r= new Random();
c.put("age", r.nextInt(20));
db.insert("poolo", null, c);
//参数:数据表名、为空时补充的值、ContentValues对象
System.out.println("SQLiteActivity======>insert success");


MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3");
//打开的数据库名 test3
SQLiteDatabase db=my.getWritableDatabase();
ContentValues c= new ContentValues();
db.delete("poolo", "id=?", new String[]{"1"});
//参数:待删除的表名、String型(where后面的字句 不过具体指为?)、匹配?的String数组
System.out.println("SQLiteActivity======>delete success");

MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3");
SQLiteDatabase db=my.getWritableDatabase();
ContentValues c= new ContentValues();
c.put("name", "awen");
db.update("poolo", c, "id=?", new String[]{"1"});
//参数:待删除的表名、存放待改的内容的ContentValues 、String型(where后面的字句 不过具体指为?)、匹配?的String数组

System.out.println("SQLiteActivity======>update success");


MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3");
SQLiteDatabase db=my.getReadableDatabase();

Cursor c=db.query("poolo", new String[]{"id","name","age"},null,null, null, null, null);
//这个就复杂了
//数据表名
//需要查询的列名
// String型(where后面的字句 不过具体指为?)
//匹配?的String数组
// String groupBy, 组序
// String having, 不知道
// String orderBy 排序
System.out.println("SQLiteActivity======>update success");
while(c.moveToNext()){
int id= c.getInt(0);
String name =c.getString(1);
int age= c.getInt(2);
System.out.println("sqlquery:id_"+id+",name_"+name+",age_"+age );

补充:
进入android的linux环境的方法[前提模拟器开启状态]
Cmd =>adb shell
可以在对应的包下找到database方法
(具体 cd data cd data cd 包名 cd databases)
到了这里后ls就能看到生成的数据库文件了。

通过 sqlite3 数据库名

就可以进入数据库操作了
.schema
可以查看数据库表的架构

在没有进入数据操作前 可以通过
Rm 文件名
删除文件。







效果:


代码:

SQLiteActivity:
package cfuture.poolo;

import java.util.Random;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SQLiteActivity extends Activity {

private Button createSQLite=null;
private Button updateSQLite=null;
private Button insert=null;
private Button update=null;
private Button select=null;
private Button delete=null;
int i=1;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        createSQLite=findView(R.id.creatButton);
        updateSQLite=findView(R.id.updateSQLite);
        insert=findView(R.id.insert);
        update=findView(R.id.update);
        select=findView(R.id.select);
        delete=findView(R.id.delete);
        createSQLite.setOnClickListener(new createSQLiteListener());
        updateSQLite.setOnClickListener(new updateSQLiteListener());
        insert.setOnClickListener(new insert());
        update.setOnClickListener(new update());
        select.setOnClickListener(new select());
        delete.setOnClickListener(new delete());

    }
    public  Button findView(int Rtemp)
    {
    Button temp=null;
    temp=(Button)this.findViewById(Rtemp);
    return temp;
    }
   
    class createSQLiteListener implements OnClickListener
   
    {

@Override
public void onClick(View v) {
MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3",null,1);
SQLiteDatabase db=my.getReadableDatabase();


}
   
    }
    class updateSQLiteListener implements OnClickListener

    {

@Override
public void onClick(View v) {
MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3",2);
SQLiteDatabase db=my.getReadableDatabase();


}
   
    }
    class insert implements OnClickListener

    {
   
@Override
public void onClick(View v) {
MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3");
SQLiteDatabase db=my.getWritableDatabase();
ContentValues c= new ContentValues();
c.put("id", i);
i++;
c.put("name", "poolo");
Random r= new Random();
c.put("age", r.nextInt(20));
db.insert("poolo", null, c);
System.out.println("SQLiteActivity======>insert success");

}
   
    }
    class update implements OnClickListener

    {

@Override
public void onClick(View v) {
MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3");
SQLiteDatabase db=my.getWritableDatabase();
ContentValues c= new ContentValues();
c.put("name", "awen");
db.update("poolo", c, "id=?", new String[]{"1"});
System.out.println("SQLiteActivity======>update success");


}
   
    }
    class select implements OnClickListener

    {

@Override
public void onClick(View v) {
MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3");
SQLiteDatabase db=my.getReadableDatabase();

Cursor c=db.query("poolo", new String[]{"id","name","age"},null,null, null, null, null);
System.out.println("SQLiteActivity======>update success");
while(c.moveToNext()){
int id= c.getInt(0);
String name =c.getString(1);
int age= c.getInt(2);
System.out.println("sqlquery:id_"+id+",name_"+name+",age_"+age );

}


}
   
    }
  class delete implements OnClickListener

    {

@Override
public void onClick(View v) {
MySqliteOpenHelper my=new MySqliteOpenHelper(SQLiteActivity.this,"test3");
SQLiteDatabase db=my.getWritableDatabase();
ContentValues c= new ContentValues();
db.delete("poolo", "id=?", new String[]{"1"});
System.out.println("SQLiteActivity======>delete success");


}
   
    }

}

MySqliteOpenHelper
package cfuture.poolo;

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

public class MySqliteOpenHelper extends SQLiteOpenHelper {

public static final int version=1;

public MySqliteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
{
super(context,name,factory,version);
}
public MySqliteOpenHelper(Context context, String name, int version)
{
this(context,name,null,version);
}
public MySqliteOpenHelper(Context context, String name)
{
this(context,name,version);
}
@Override
public void onCreate(SQLiteDatabase db) {

db.execSQL("create table poolo(id int,name varchar(20),age int)");
System.out.println("MySQLiteOpenHelper======>onCreate");
}

@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
System.out.println("MySQLiteOpenHelper======>onUpgrade");
System.out.println("onUpgrade====="+ arg1 + "|"+ arg2 + "=======");

}
    public void onOpen(SQLiteDatabase db) {  
        super.onOpen(db);  
        System.out.println("MySQLiteOpenHelper======>open");
    }  

}

布局文件
Main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Button
android:id="@+id/creatButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/createSQLite"/>
    <Button
android:id="@+id/updateSQLite"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/updateSQLite"/>
    <Button
android:id="@+id/insert"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/insert"/>
    <Button
android:id="@+id/select"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/select"/>
        <Button
android:id="@+id/update"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/update"/>
            <Button
android:id="@+id/delete"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/delete"/>
</LinearLayout>


DSC0000.jpg

2011-8-15
poolo

Android菜鸟日记10
SQLite 数据库

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-307907-1-1.html 上篇帖子: Android中Sqlite数据库多线程并发问题 下篇帖子: Android提高第八篇之SQLite分页读取[转]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表