Android SQLiteDatabase帮助类SQLiteOpenHelper的使用

SQLiteOpenHelper是SQLiteDatabse的一个帮助类,用来管理数据的创建和版本更新。一般的用法是定义一个类继承SQLiteOpenHelper,并实现两个回调方法,OnCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabse, int oldVersion, int newVersion)来创建和更新数据库,我利用数据库做了一个类似电话本的功能,插入数据,查询数据,和删除数据,界面很丑,主要是讲解SQLiteOpenHelper类的用法,截图如下

 

首先我们创建一个DBHelper继承SQLiteOpenHelper,这个是数据库的一个帮助类

package com.example.utils;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {
	private final static int VERSION = 1;
	private final static String DB_NAME = "phones.db";
	private final static String TABLE_NAME = "phone";
	private final static String CREATE_TBL = "create table phone(_id integer primary key autoincrement, name text, sex text, number text, desc text)";
	private SQLiteDatabase db;

	//SQLiteOpenHelper子类必须要的一个构造函数
	public DBHelper(Context context, String name, CursorFactory factory,int version) {
		//必须通过super 调用父类的构造函数
		super(context, name, factory, version);
	}
	
	//数据库的构造函数,传递三个参数的
	public DBHelper(Context context, String name, int version){
		this(context, name, null, version);
	}
	
	//数据库的构造函数,传递一个参数的, 数据库名字和版本号都写死了
	public DBHelper(Context context){
		this(context, DB_NAME, null, VERSION);
	}
	
    // 回调函数,第一次创建时才会调用此函数,创建一个数据库
	@Override
	public void onCreate(SQLiteDatabase db) {
		this.db = db;
		System.out.println("Create Database");
		db.execSQL(CREATE_TBL);
	}

	//回调函数,当你构造DBHelper的传递的Version与之前的Version调用此函数
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		System.out.println("update Database");

	}
	
	//插入方法
	public void insert(ContentValues values){
		//获取SQLiteDatabase实例
		SQLiteDatabase db = getWritableDatabase();
		//插入数据库中
		db.insert(TABLE_NAME, null, values);
		db.close();
	}
	
	//查询方法
	public Cursor query(){
		SQLiteDatabase db = getReadableDatabase();
		//获取Cursor
		Cursor c = db.query(TABLE_NAME, null, null, null, null, null, null, null);
		return c;
		
	}
	
	//根据唯一标识_id  来删除数据
	public void delete(int id){
		SQLiteDatabase db = getWritableDatabase();
		db.delete(TABLE_NAME, "_id=?", new String[]{String.valueOf(id)});
	}
	
	
	//更新数据库的内容
	public void update(ContentValues values, String whereClause, String[]whereArgs){
		SQLiteDatabase db = getWritableDatabase();
		db.update(TABLE_NAME, values, whereClause, whereArgs);
	}
	
	//关闭数据库
	public void close(){
		if(db != null){
			db.close();
		}
	}

}

第一个MainActivity

package com.example.phonebooks;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;

import com.example.utils.DBHelper;

public class MainActivity extends Activity implements OnClickListener{
	private DBHelper dbHelper;
	//定义三个输入框
	private EditText name, number, desc;
	//定义两个按钮
	private Button submit ,look;
	//定义一个RadioGroup
	private RadioGroup radio;
	private String nameStr, numberStr, descStr;
	private String sexStr = "男";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//实例化DBHelper
		dbHelper = new DBHelper(this);
		
		//根据id 获取到相对应的控件
		name = (EditText)findViewById(R.id.editText1);
		number = (EditText)findViewById(R.id.editText2);
		desc = (EditText)findViewById(R.id.editText3);
		submit = (Button)findViewById(R.id.button1);
		look = (Button)findViewById(R.id.button2);
		radio = (RadioGroup)findViewById(R.id.radioGroup1);
		
		
		//按钮设置点击监听
		submit.setOnClickListener(this);
		look.setOnClickListener(this);
		
		//单选群组的监听
		radio.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			
			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				if(checkedId == R.id.radio0){
					RadioButton r = (RadioButton) group.findViewById(checkedId);
					sexStr = r.getText().toString();
				}
				if(checkedId == R.id.radio1){
					RadioButton r = (RadioButton) group.findViewById(checkedId);
					sexStr = r.getText().toString();
				}
				
			}
		});
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.button1:
			if(name.getText().toString().length() != 0){
				nameStr = name.getText().toString();
			}else{
				Toast.makeText(getApplication(), "姓名不能为空", Toast.LENGTH_SHORT).show();
				return;
			}
			if(number.getText().toString().length() != 0){
				numberStr = number.getText().toString();
			}else{
				Toast.makeText(getApplication(), "电话号码不能为空", Toast.LENGTH_SHORT).show();
				return;
			}
			if(desc.getText().toString().length() != 0){
				descStr = desc.getText().toString();
			}else{
				Toast.makeText(getApplication(), "备注不能为空", Toast.LENGTH_SHORT).show();
				return;
			}
			
			//实例化一个ContentValues, ContentValues是以键值对的形式,键是数据库的列名,值是要插入的值
			ContentValues values = new ContentValues();
			values.put("name", nameStr);
			values.put("sex", sexStr);
			values.put("number", numberStr);
			values.put("desc", descStr);
			
			//调用insert插入数据库
			dbHelper.insert(values);
			
			//将三个输入框重置下
			reset();
			break;
		case R.id.button2:
			Intent intent = new Intent();
			intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
			intent.setClass(this, ResultActivity.class);
			startActivity(intent);
			break;
		default:
			break;
		}
		
		
		
		
	}
	
	//重置edittext
	private void reset(){
		name.setText("");
		number.setText("");
		desc.setText("");
	}


}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#000000" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="姓名"
        android:textSize="15dp" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="男" />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/radioGroup1"
            android:layout_toRightOf="@+id/textView2"
            android:text="女" />
    </RadioGroup>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/radioGroup1"
        android:text="电话号码" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView2"
        android:ems="10" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText2"
        android:text="备注" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView3"
        android:lines="5"
        android:ems="10"
        android:inputType="textMultiLine" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:text="查看" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/editText3"
        android:text="插入" />

</RelativeLayout>
用一个Person类来封装姓名,性别,电话,备注这些数据。里面只有get()和set()方法

package com.example.mode;

public class Person {
	private String name;
	private String sex;
	private String number;
	private String desc;
	private int _id;
	
	public int get_id() {
		return _id;
	}
	public void set_id(int _id) {
		this._id = _id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getNumber() {
		return number;
	}
	public void setNumber(String number) {
		this.number = number;
	}
	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
	
	
}

查看数据的ResultActivity

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:cacheColorHint="#00000000"
        android:layout_alignParentTop="true" >
    </ListView>

</RelativeLayout>

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView4"
        android:layout_alignParentRight="true"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView4"
        android:layout_centerHorizontal="true"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="19dp"
        android:text="TextView" />

</RelativeLayout>

主要不要忘了在AndroidManifest.xml 注册ResultActivity

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统的功能模块主要是实现管理员服务端;首页、个人心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值