数据库

<span style="font-size:18px;"></span><h2><span style="font-size:18px;">Person </span></h2>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;">package com.xh.tx.bean;

public class Person {
	private Integer _id;
	private String name;
	private Integer age;
	
	public Integer get_id() {
		return _id;
	}
	public void set_id(Integer _id) {
		this._id = _id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Person() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Person(Integer _id, String name, Integer age) {
		super();
		this._id = _id;
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString(){
		return "Person[_id=]"+_id+",name="+name+",age"+age+"]";
		
	}

}</span>


PersonDao

<span style="font-size:18px;">package com.xh.tx.dao;

import java.util.ArrayList;
import java.util.List;

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

import com.xh.tx.SQLite.SQLite;
import com.xh.tx.bean.Person;

public class PersonDao {
	private SQLite helper;
	
	public PersonDao(Context context){
		helper=new SQLite(context,null,null,-1);
		
	}
	
	/**
	 * 添加一个对象
	 * sql:insert into person(name,age)values('zs',20);
	 * 缺陷:1、传递参数很麻烦 2、不能有返回值
	 */

	public void savePerson(Person p){
		
		String sql="insert into person(name,age)values(?,?);";
		
		SQLiteDatabase db=helper.getWritableDatabase();
		
		//db代表的是一个数据库的一个连接
		if(db.isOpen()){
			
			db.execSQL(sql, new Object[] {p.getName(),p.getAge()});
			db.close();
		}
	}
		
	/**
	 *  删除一个对象
	 *  sql:delete from person where _id=1;
	 */
	
	public void deletePerson(Integer id){
		
		String sql="delete from person where _id=?;";
		SQLiteDatabase db=helper.getWritableDatabase();
		
		if(db.isOpen()){
			
			db.execSQL(sql, new Integer[] {id});
			db.close();
			
		}
	}
	/**
	 * 修改一个对象
	 * sql:update person set name='cccc' where _id=1;
	 */
	
	public void updatePerson(Person p){
		
		String sql="update person set name=? where _id=?;";
		
		SQLiteDatabase db=helper.getWritableDatabase();
		
		if(db.isOpen()){
			
			db.execSQL(sql, new Object[] {p.getName(),p.get_id()});
			db.close();
		}
	}
	
	/**
	 * 查询所有
	 * sql:select * from person;
	 */
	
	public List<Person> queryPerson(){
		
		String sql="select _id,name,age from person;";
		SQLiteDatabase db=helper.getWritableDatabase();
		List<Person>list=null;
		
		if(db.isOpen()){
			
			Cursor cursor=db.rawQuery(sql, null);//查询
			
			//cursor.getCount()查看执行sql以后返回的结果集的个数
			if(cursor != null && cursor.getCount()>0){
				
				list=new ArrayList<Person>();
				
				while(cursor.moveToNext()){
					
					Integer id=cursor.getInt(0);
					String name=cursor.getString(1);
					Integer age=cursor.getInt(2);
					
					list.add(new Person(id,name,age));
					
				}
			}
		}
		return list;		
	}
}

</span>


PersonDao1

<span style="font-size:18px;">package com.xh.tx.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.xh.tx.SQLite.SQLite;
import com.xh.tx.bean.Person;

public class PersonDao1 {

		private static final String TAG = "PersonDao1";
		
		private SQLite helper;
		
		public PersonDao1(Context context){
			helper =new SQLite(context,null,null,-1);
		}
		
		//添加数据
		public void savePerson(Person p){
			
			SQLiteDatabase db=helper.getWritableDatabase();
			
			if(db.isOpen()){
				
				//nullColumnHack 如果数据库里面的name设计的时候不允许为空,但是你传递过来的参数是空,
				//如果不设置这个nullColumnHack参数那么就会报错
				//如果设置nullColumnHack这个参数的值为name那么不会报错
				
				ContentValues values = new ContentValues();
				
				values.put("name", p.getName());
				values.put("age", p.getAge());
				
				Long id=db.insert("person", null, values);
				
				Log.d(TAG,"=============:"+id);
				db.close();
			}
		}
		
		//删除数据
		public void deletePerson(Integer id){
			
			SQLiteDatabase db=helper.getWritableDatabase();
			
			if(db.isOpen()){
				
				String whereClause="_id=?";
				String [] whereArgs=new String []{String.valueOf(id)};
				
				int _id=db.delete("person", whereClause, whereArgs);
				
				Log.d(TAG, "===========:"+_id);
				db.close();
				
			}
		} 
		
		//修改数据
		public void updatePerson(Person p){
			
			SQLiteDatabase db=helper.getWritableDatabase();
			if(db.isOpen()){
				
				ContentValues values=new ContentValues();
				values.put("name", "wtw");
				values.put("age", "2");
				
				String whereClause="_id=?";
				String [] whereArgs=new String []{String.valueOf(p.get_id())};
				
				db.update("person", values, whereClause, whereArgs);
				db.close();
				
			}
		}
		
		//
		public void queryItem(Integer id){
			
			SQLiteDatabase db=helper.getWritableDatabase();
			if(db.isOpen()){
				
				String [] columns=new String[]{"_id","name","age"};
				String selection="_id=?";
				String [] selectionArgs = new String []{String.valueOf(id)};
				String groupBy=null;//按什么什么分组
				String having =null;//如果select里面包含组函数的时候,不能用where去查询 就只能用having
				String orderBy=null;//按什么排序 order by id desc;
				
				Cursor cursor =db.query("person", columns, selection, selectionArgs, groupBy, having, orderBy);
				
				if(null!= cursor && cursor.moveToFirst()){
					
					Integer _id=cursor.getInt(0);
					String name = cursor.getString(1);
					Integer age=cursor.getInt(2);
					
					Log.d(TAG,"_id="+_id+"name="+name+"age="+age);
					db.close();
				}
			}
			
		}
} </span>

MainActivity
<span style="font-size:18px;">package com.xh.tx.SQLite;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

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

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, 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();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}</span>

SQLite
<span style="font-size:18px;">package com.xh.tx.SQLite;

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

public class SQLite extends SQLiteOpenHelper {
	
	/**
	 * 函数的作用:构造方法用来创建工具类
	 * @param context 上下文环境
	 * @param name  数据库的名称
	 * @param factory  游标对象 Cursor
	 * @param version   数据库的版本 不能从0开始
	 * 
	 */

	public SQLite(Context context, String name, CursorFactory factory,
			int version) {
		super(context, "test.db", null, 1);
	
	}
	/**
	 * 用来创建数据库
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		
		String sql="create table person(_id integer primary key,name varchar(20),age integer);";
	
			db.execSQL(sql);//真正执行数据的创建
	}

		//数据库版本更新
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	
		
	}
	//每次打开数据库的时候调用
	@Override
	public void onOpen(SQLiteDatabase db) {
		super.onOpen(db);
	}
}
</span>

TestDB
<span style="font-size:18px;">package com.xh.tx.test;

import java.util.List;

import com.xh.tx.SQLite.SQLite;
import com.xh.tx.bean.Person;
import com.xh.tx.dao.PersonDao;

import android.test.AndroidTestCase;
import android.util.Log;

public class TestDB extends AndroidTestCase{
	
	private static final String TAG = "TestDB";

			
		public void testdb(){
			
			SQLite helper=new SQLite(getContext(),null,null,-1);
			helper.getWritableDatabase();
		}
		
		//添加数据
		public void testsavePerson(){
			Person p=new Person (1,"lisa",23);
			PersonDao dao=new PersonDao(getContext());
			
			dao.savePerson(p);
			
		}
		
		//删除数据
		public void testdeletePerson(){
			
			PersonDao dao=new PersonDao(getContext());
			dao.deletePerson(1);
			
		}
		
		//修改数据
		public void testupdatePerson(){
			
			Person p=new Person(1,"zhoujielun",36);
			PersonDao dao=new PersonDao(getContext());
			dao.updatePerson(p);
		}
		
		//
		public void testQuery(){
			
			PersonDao dao=new PersonDao(getContext());
			List<Person> list=dao.queryPerson();
			
			for(Person p:list){
				Log.d(TAG, p.toString());
			}		
		}
}</span>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值