1、实体

package mydemo.mycom.demo2.entity;

public class UserInfo {
private int id;
private String username;
private String password; public UserInfo()
{ } public UserInfo(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
} 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 getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}

2.UserSQLiteOpenHelper

package mydemo.mycom.demo2.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; public class UserSQLiteOpenHelper extends SQLiteOpenHelper { /**
* 数据库的构造方法 用来定义数据库的名称 数据库查询的结果集 数据库的版本
* **/ public UserSQLiteOpenHelper(Context context) {
super(context, "user.db", null, 1);
}
/**
* 数据库第一次被创建的时候调用的方法
* db被创建的数据库
* **/
@Override
public void onCreate(SQLiteDatabase db) {
//初始化数据库的表结构 d integer primary key autoincrement,
db.execSQL("create table user (id integer primary key autoincrement,username varchar(20),password varchar(20))");
}
/**
* 当数据库的版本号发生变化的时候(增加的时候) 调用
* */
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i2) { db.execSQL("alter table user add account varchar(20)");
}
}

3.JDBC的UserDAO

package mydemo.mycom.demo2.dao;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import java.util.ArrayList;
import java.util.List; import mydemo.mycom.demo2.db.UserSQLiteOpenHelper;
import mydemo.mycom.demo2.entity.UserInfo; public class UserDao { private UserSQLiteOpenHelper helper; public UserDao(Context context)
{
helper = new UserSQLiteOpenHelper(context);
} /**
* 添加一条记录到数据库
* username 用户名
* password 密码
*
* */
public void add(String username,String password)
{
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("insert into user(username,password) values(?,?)",new String[]{username,password});
db.close(); } /**
* 判断数据库是否存在username 的数据
*
* username 用户名
* */
public boolean findByUsername(String username)
{
SQLiteDatabase db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from user where username=?",new String[]{username});
boolean result = cursor.moveToNext();
db.close();
return result;
} /**
* 修改一条记录
* 通过username 修改 password
*
* username 用户名
* password 密码
*
* */
public void update(String username,String password)
{
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("update user set password=? where username=?",new String[]{password,username});
db.close(); } /**
* 删除记录
* 通过username修改一条记录
*
* username 用户名
* */
public void delete(String username)
{
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("delete from user where username=?",new String[]{username});
db.close();
} /**
* 找出所有用户信息
* */
public List<UserInfo> findAll()
{
SQLiteDatabase db = helper.getWritableDatabase();
List<UserInfo> list = new ArrayList<UserInfo>();
Cursor cursor = db.rawQuery("select * from user",null);
while(cursor.moveToNext())
{
int id = cursor.getInt(cursor.getColumnIndex("id"));
String username = cursor.getString(cursor.getColumnIndex("username"));
String password = cursor.getString(cursor.getColumnIndex("password")); UserInfo userInfo = new UserInfo(id,username,password);
list.add(userInfo);
}
cursor.close();
db.close();
return list;
} /**
* 通过id 用户信息
* id 用户id
* */
public UserInfo findById(int id)
{
SQLiteDatabase db = helper.getWritableDatabase();
Cursor cursor =db.rawQuery("select * from user where id=?",new String[]{id+""}); UserInfo user = new UserInfo(); while(cursor.moveToNext())
{
int uid = cursor.getInt(cursor.getColumnIndex("id"));
String username = cursor.getString(cursor.getColumnIndex("username"));
String password = cursor.getString(cursor.getColumnIndex("password")); user.setId(uid);
user.setPassword(password);
user.setUsername(username); break;
}
cursor.close();
db.close();
return user; } }

4.SQLiteOpenHelper的 UserDAO

package mydemo.mycom.demo2.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import java.util.ArrayList;
import java.util.List; import mydemo.mycom.demo2.db.UserSQLiteOpenHelper;
import mydemo.mycom.demo2.entity.UserInfo; /**
* Created by Administrator on 2015/5/15.
*/
public class UserDao2 { private UserSQLiteOpenHelper helper; public UserDao2(Context context)
{
helper = new UserSQLiteOpenHelper(context);
} /**
* 添加一条记录到数据库
* username 用户名
* password 密码
*
* */
public long add(String username,String password)
{
SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("username",username);
values.put("password",password); long num = db.insert("user",null,values); db.close(); return num;
} /**
* 判断数据库是否存在username 的数据
*
* username 用户名
* */
public boolean findByUsername(String username)
{
SQLiteDatabase db = helper.getWritableDatabase();
Cursor cursor = db.query("user",null,"username=?",new String[]{username},null,null,null);
boolean result = cursor.moveToNext();
db.close();
return result;
} /**
* 修改一条记录
* 通过username 修改 password
*
* username 用户名
* password 密码
*
* */
public int update(String username,String password)
{
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("password",password);
int num = db.update("user",values,"username=?", new String[]{username});
db.close();
return num;
} /**
* 删除记录
* 通过username修改一条记录
*
* username 用户名
* */
public int delete(String username)
{
SQLiteDatabase db = helper.getWritableDatabase();
int num = db.delete("user","username=?",new String[]{username});
db.close();
return num;
} /**
* 找出所有用户信息
* */
public List<UserInfo> findAll()
{
SQLiteDatabase db = helper.getWritableDatabase();
List<UserInfo> list = new ArrayList<UserInfo>();
Cursor cursor = db.query("user",null,null,null,null,null,null);
while(cursor.moveToNext())
{
int id = cursor.getInt(cursor.getColumnIndex("id"));
String username = cursor.getString(cursor.getColumnIndex("username"));
String password = cursor.getString(cursor.getColumnIndex("password")); UserInfo userInfo = new UserInfo(id,username,password);
list.add(userInfo);
}
cursor.close();
db.close();
return list;
} /**
* 通过id 用户信息
* id 用户id
* */
public UserInfo findById(int id)
{
SQLiteDatabase db = helper.getWritableDatabase();
Cursor cursor = db.query("user",null,"id=?",new String[]{id+""},null,null,null); UserInfo user = new UserInfo(); while(cursor.moveToNext())
{
int uid = cursor.getInt(cursor.getColumnIndex("id"));
String username = cursor.getString(cursor.getColumnIndex("username"));
String password = cursor.getString(cursor.getColumnIndex("password")); user.setId(uid);
user.setPassword(password);
user.setUsername(username); break;
}
cursor.close();
db.close();
return user; }
}

5.SQLiteOpenHelper 简单使用

package mydemo.mycom.demo2;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast; import mydemo.mycom.demo2.dao.UserDao;
import mydemo.mycom.demo2.dao.UserDao2; public class Register extends ActionBarActivity implements View.OnClickListener { private EditText et_register_username;
private EditText et_register_password;
private Button btn_register; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register); et_register_username = (EditText)findViewById(R.id.et_register_username);
et_register_password = (EditText)findViewById(R.id.et_register_password);
btn_register = (Button)findViewById(R.id.btn_register);
btn_register.setOnClickListener(this); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_register, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
} @Override
public void onClick(View view) { String username = et_register_username.getText().toString().trim();
String password = et_register_password.getText().toString().trim();
if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
{
Toast.makeText(this,"用户名和密码不能为空",Toast.LENGTH_SHORT).show();
return;
}
UserDao2 userDao = new UserDao2(this);
userDao.add(username,password);
Toast.makeText(this,"注册成功",Toast.LENGTH_SHORT).show(); }
}

6.SQLiteOpenHelper事务管理

package mydemo.mycom.demo2.testUserDao;

import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase; import mydemo.mycom.demo2.db.UserSQLiteOpenHelper; public class TestUserInfo extends AndroidTestCase{
private String s;
public void testTransaction() throws Exception
{
UserSQLiteOpenHelper helper = new UserSQLiteOpenHelper(getContext());
SQLiteDatabase db = helper.getWritableDatabase();
//开始数据库的事务
db.beginTransaction();
try{
db.execSQL("update user set account=account-1000 where id=1");
//空指针异常
s.equals("123");
db.execSQL("update user set account=account+1000 where id=2");
//提交事务
db.setTransactionSuccessful();
}
catch(Exception ex)
{
}
finally
{
//结束事务
db.endTransaction();
db.close();
}
} }

android SQLiteOpenHelper 使用的更多相关文章

  1. Android SQLiteOpenHelper(二)

    上一篇我们已经了解了SQLiteOpenHelper 和 构造函数. 现在我们就来掌握一下:onCreate( )  onUpgrade( )  onDowngrade( ) public void ...

  2. Android SQLiteOpenHelper(一)

    SQLiteOpenHelper api解释: A helper class to manage database creation and version management. You creat ...

  3. Android SQLiteOpenHelper类的使用

    SQLiteOpenHelper类是Android平台提供的用于SQLite数据库的创建.打开以及版本管理的帮助类.一般需要继承并这个类并实现它的onCreate和onUpgrade方法,在构造方法中 ...

  4. android SQLiteOpenHelper使用示例

    我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的 ...

  5. Android SQLiteOpenHelper Sqlite数据库升级onUpgrade

    Android Sqlite数据库升级,在Android APP开发之中,非常常见: 在确定原来的数据库版本号之后,在原来数据库版本号+1,就会执行onUpgrade方法,进行数据库升级操作: 在on ...

  6. Android SQLiteOpenHelper Sqlite数据库的创建与打开

    Android Sqlite数据库是一个怎样的数据库? 答:是一种嵌入式小型设备,移动设备,的数据库,应用在穿戴设备(例如:智能手表,计算手环 等等),移动设备(例如:Android系统类型的手机 等 ...

  7. Android SqliteOpenHelper详解

    一. SQLite介绍 SQLite是android内置的一个很小的关系型数据库. SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息. 博客中有一篇有稍微 ...

  8. Android · SQLiteOpenHelper实例PrivateContactsDBHelper

    package privatecontact; import android.content.ContentValues; import android.content.Context; import ...

  9. 升级后开机就提示“android.process.acore”停止执行 --分析 解决方式

    OTA升级的,升级引发的全部问题都是能够解释的,有的能解决,有的不能解决. 一个项目报了这个问题. 升级后开机就提示"android.process.acore"停止执行 抓取 a ...

随机推荐

  1. Python 2和Python 3的编码问题

    在Python2中,字符串无法完全地支持国际字符集和Unicode编码.为了解决这种限制,Python2对Unicode数据使用了单独的字符串类型.要输入Unicode字符串字面量,要在第一个引号前加 ...

  2. matplotlib绘图

    fig = plt.figure() ax=plt.gca() timeList = np.array(timeList) timeList=timeList*100 timeList1 = np.a ...

  3. iptables防火墙配置

    iptables防火墙配置 一.防火墙简介 1.功能: 1)通过源端口,源IP地址,源MAC地址,包中特定标记和目标端口,IP,MAC来确定数据包是否可以通过防火墙 2)分割内网和外网[附带的路由器的 ...

  4. linux python3 selenuim firefox

    1.官网下载火狐浏览器最新版本复制到/usr/local/softwar 下 cd /usr/local/softwar 下 tar jxvf Firefox-latest-x86_64.tar.bz ...

  5. Linux系统——程序员跳槽必备

    相信在看这篇文章的你,曾经或者现在是否跳槽呢,在北上广一线城市,你是否还在挣着那可怜巴巴的工资,过着拮据生活呢?但是自己想跳槽,却没有一技之长或者是自己的技术找工作太难了,那么我建议你学习下linux ...

  6. TortoiseGit连接gitlab,一直要求输入密码

    问题背景: 公司使用gitlab作为代码管理平台,安装了TortoiseGit之后,使用正常.但是重启电脑之后,再次使用TortoiseGit操作时总是提醒输入gitlab的账号.如下图: 问题原因: ...

  7. Watchdogs利用Redis实施大规模挖矿,常见数据库蠕虫如何破?

    背景 2月20日17时许,阿里云安全监测到一起大规模挖矿事件,判断为Watchdogs蠕虫导致,并在第一时间进行了应急处置. 该蠕虫短时间内即造成大量Linux主机沦陷,一方面是利用Redis未授权访 ...

  8. BZOJ 2929: [Poi1999]洞穴攀行

    2929: [Poi1999]洞穴攀行 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 351  Solved: 195[Submit][Status][ ...

  9. volatile的实现原理与应用

    Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. vola ...

  10. Python异步IO

    在IO操作的过程中,当前线程被挂起,而其他需要CPU执行的代码就无法被当前线程执行了. 我们可以使用多线程或者多进程来并发执行代码,为多个用户服务. 但是,一旦线程数量过多,CPU的时间就花在线程切换 ...