Sqlite中INTEGER PRIMARY KEY的修正
来源:互联网 发布:新生儿数据泄露 编辑:程序博客网 时间:2024/04/29 03:54
在android的Sqlite 中对于INTEGER PRIMARY KEY,
如果插入数据A,B,C,它们的_id为1,2,3,那么如果把他们都删除了,
再插入一条数据,那么它的id为为1而不是4。
因此我就写了这个工具来生成id,它能让生成相同的id相隔尽量的远。
然后在插据入数时手动设置id,及把这个作为插入参数id传进去。
删除时,也要做相应的处理。
实例1:
文件1:
SerialManager.java
package com.teleca;
public class SerialManager {
Node root=null;
long min=Long.MIN_VALUE;
long max=Long.MAX_VALUE;
long cursor=1;
publicSerialManager()
{
}
publicSerialManager(long min,long max)
{
if(min>max)
{
long temp=min;
min=max;
max=temp;
}
this.min=min;
this.max=max;
}
public void setSerial(long id,boolean flag)
{
long temp=0;
Node node=findNode(id);
if(flag)
{
if(node==null)
{
node=findNode(id-1);
if(node!=null)
{
node.data.end=id;
Node node2=findNode(id+1);
if(node2!=null)
{
node.data.end=node2.data.end;
this.removeNode(node2);
}
}
else
{
Node node2=findNode(id+1);
if(node2!=null)
{
node2.data.start=id;
}
else
addNewNode(id,id);
}
}
return;
}
else
{
if(node==null)
return;
Block data=node.data;
if(data.start==data.end)
{
removeNode(node);
}
else if(id==data.start)
data.start=id+1;
else if(id==data.end)
data.end=id-1;
else
{
temp=data.end;
data.end=id-1;
addNewNode(id+1,temp);
}
}
}
public voidsetSerial(long id1,long id2)
{
long temp=0;
if(id1>id2)
{
temp=id1;
id1=id2;
id2=temp;
}
Node node1=findNode(id1);
Node node2=null;
if(node1==null)
{
node1=findNode(id1-1);
if(node1!=null)
{
node1.data.end=id2;
node2=findNode(id2+1);
if(node2!=null)
{
node1.data.end=node2.data.end;
this.removeNode(node2);
}
return;
}
else
{
node2=findNode(id2);
if(node2==null)
{
node2=findNode(id2+1);
if(node2!=null)
node2.data.start=id1;
else
addNewNode(id1,id2);
return;
}
else
{
node2.data.start=id1;
return;
}
}
}
else
{
Block data=node1.data;
if(id2<=data.end)
{
return;
}
else
{
node2=findNode(id2);
if(node2==null)
{
data.end=id2;
return;
}
else
{
data.end=node2.data.end;
removeNode(node2);
}
}
}
}
public longgetSerial()
{
Node node=findNode(cursor);
long start=cursor;
while(node!=null)
{
cursor=node.data.end+1;
if(cursor>max)
cursor=min;
else if (cursor==0)
cursor++;
if(cursor==start)
{
return 0;
}
node=findNode(cursor);
}
long res=cursor;
cursor++;
if(cursor>max)
cursor=min;
else if (cursor==0)
cursor++;
return res;
}
public booleanisKeyUsed(long id)
{
return findNode(id)!=null;
}
private Node findNode(long id)
{
Node node=null;
Node tempNode=root;
Block block=null;
while(tempNode!=null)
{
block=tempNode.data;
if(block.start<=id&&id<=block.end)
{
node=tempNode;
break;
}
tempNode=tempNode.next;
}
return node;
}
private void addNewNode(long id1,long id2)
{
Node node=new Node();
node.data=new Block(id1,id2);
addNode(node);
}
private void addNode(Node node)
{
if(root==null)
{
root=node;
node.prev=null;
node.next=null;
return;
}
Node tempNode=root;
while(tempNode!=null)
{
if(tempNode.data.start>node.data.end)
{
if(tempNode==root)
{
node.prev=null;
node.next=root;
tempNode.prev=node;
root=node;
}
else
{
node.prev=tempNode.prev;
node.next=tempNode;
tempNode.prev.next=node;
tempNode.prev=node;
}
break;
}
else if(tempNode.next==null)
{
tempNode.next=node;
node.prev=tempNode;
node.next=null;
break;
}
tempNode=tempNode.next;
}
}
private void removeNode(Node node)
{
Node prev=node.prev;
if(prev==null)
{
root=node.next;
}
else
{
prev.next=node.next;
}
if(node.next!=null)
node.next.prev=prev;
node.prev=null;
node.next=null;
}
public void clear()
{
Node tempNode=root;
Node node=null;
while(tempNode!=null)
{
node=tempNode;
tempNode=tempNode.next;
node.prev=null;
node.next=null;
}
root=null;
cursor=1;
}
public void println()
{
Node tempNode=root;
while(tempNode!=null)
{
System.out.println("start:"+tempNode.data.start+"end:"+tempNode.data.end);
tempNode=tempNode.next;
}
}
}
class Node
{
Node prev=null;
Block data;
Node next=null;
}
class Block
{
long start=0;
long end=0;
Block(long id1,long id2)
{
start=id1;
end=id2;
}
public long getStart() {
return start;
}
public void setStart(long start) {
this.start = start;
}
public long getEnd() {
return end;
}
public void setEnd(long end) {
this.end = end;
}
}
文件2:
DBHelper.java
package com.teleca;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;;
public class DBHelper {
public static String DB_NAME="peopledb";
public static String DB_TABLE_NAME="people";
SQLiteDatabase db;
final DBOpenHelper dbOpenHelper;
final static String COLS[]=new String[]
{"_id","name","phone","age"};
final String tag="hubin";
public DBHelper(Context context)
{
this.dbOpenHelper=new DBOpenHelper(context,DB_NAME,1);
establishDb();
}
SerialManager serialManager=new SerialManager();
private void establishDb()
{
if(db==null)
db=dbOpenHelper.getWritableDatabase();
initSerial();
}
private voidinitSerial()
{
serialManager.clear();
Cursor c=db.query(DBHelper.DB_TABLE_NAME, new String[]{"_id"}, null, null, null, null, "_id DESC",null);
c.moveToFirst();
int count=c.getCount();
c.moveToFirst();
long id=0;
for(int i=0;i<count;i++)
{
id=c.getLong(0);
serialManager.setSerial(id, true);
Log.i("hubin", "id :"+id+"set to serial");
c.moveToNext();
}
c.close();
}
public void cleanup()
{
if(db!=null)
{
db.close();
db=null;
}
}
public void insert(People people)
{
ContentValues values=new ContentValues();
values.put("name", people.name);
values.put("phone", people.phone);
values.put("age", people.age);
long id=serialManager.getSerial();
values.put("_id", id);
people.id=db.insert(DBHelper.DB_TABLE_NAME, null, values);
serialManager.setSerial(id, true);
Log.i(tag,"insert:"+people.id);
}
public void update(People people)
{
ContentValues values=new ContentValues();
values.put("name", people.name);
values.put("phone", people.phone);
values.put("age", people.age);
db.update(DBHelper.DB_TABLE_NAME,values,"_id="+people.id,null);
}
public void delete(long id)
{
db.delete(DB_TABLE_NAME, "_id="+id, null);
serialManager.setSerial(id, false);
}
public void deleteAll()
{
db.delete(DB_TABLE_NAME, null, null);
serialManager.clear();
}
public People get(long id)
{
People people=new People();
Cursor c=null;
try{
c=db.query(DB_TABLE_NAME, COLS,"_id= '"+id+"'",null,null,null,null);
Log.i(tag,"count:"+c.getCount());
if(c.getCount()>0)
{
c.moveToFirst();
people=new People();
people.id=c.getLong(0);
people.name=c.getString(1);
people.phone=c.getString(2);
people.age=c.getInt(3);
}
}catch(SQLException e)
{
Log.i(tag,"",e);
}
finally
{
if(c!=null&&!c.isClosed())
{
c.close();
}
}
return people;
}
public List<People> getAll()
{
ArrayList<People> ret=new ArrayList<People>();
Cursor c=null;
try
{
c=db.query(DB_TABLE_NAME, COLS,null,null,null,null,null);
int count=c.getCount();
c.moveToFirst();
People people;
for(int i=0;i<count;i++)
{
people=new People();
people.id=c.getLong(0);
people.name=c.getString(1);
people.phone=c.getString(2);
people.age=c.getInt(3);
ret.add(people);
c.moveToNext();
}
}catch(SQLException e)
{
Log.i(tag,"",e);
}
finally
{
if(c!=null&&!c.isClosed())
{
c.close();
}
}
return ret;
}
}
class DBOpenHelper extends SQLiteOpenHelper
{
private static final String DB_CREATE="CREATE TABLE "
+DBHelper.DB_TABLE_NAME
+" (_id INTEGER PRIMARY KEY,name TEXT UNIQUE NOT NULL,"
+"phone TEXT,age INTEGER);";
final static String tag="hubin";
public DBOpenHelper(Context context,String dbName,int version)
{
super(context,dbName,null,version);
}
public void onCreate(SQLiteDatabase db)
{
try{
db.execSQL(DB_CREATE);
}
catch(SQLException e )
{
Log.e(tag,"",e);
}
}
public void onOpen(SQLiteDatabase db)
{
super.onOpen(db);
}
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS "+DBHelper.DB_TABLE_NAME);
this.onCreate(db);
}
}
文件3:
People.java
package com.teleca;
public class People {
public long id;
public String name;
public String phone;
public int age;
}
文件4:
Hello.java
package com.teleca;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Hello extends Activity {
DBHelper dbHelper;
final static String tag="hubin";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.Button01);
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
cmd = CMD_ADD;
doAction();
}
};
button.setOnClickListener(listener);
Button button2 = (Button) findViewById(R.id.Button02);
OnClickListener listener2 = new OnClickListener() {
@Override
public void onClick(View v) {
cmd = CMD_UPDATE;
doAction();
}
};
button2.setOnClickListener(listener2);
Button button3 = (Button) findViewById(R.id.Button03);
OnClickListener listener3 = new OnClickListener() {
@Override
public void onClick(View v) {
cmd = CMD_QUERY;
doAction();
}
};
button3.setOnClickListener(listener3);
Button button4 = (Button) findViewById(R.id.Button04);
OnClickListener listener4 = new OnClickListener() {
@Override
public void onClick(View v) {
cmd = CMD_QUERY_ALL;
doAction();
}
};
button4.setOnClickListener(listener4);
Button button5 = (Button) findViewById(R.id.Button05);
OnClickListener listener5 = new OnClickListener() {
@Override
public void onClick(View v) {
cmd = CMD_DELETE;
doAction();
}
};
button5.setOnClickListener(listener5);
Button button6 = (Button) findViewById(R.id.Button06);
OnClickListener listener6 = new OnClickListener() {
@Override
public void onClick(View v) {
cmd = CMD_DELETE_ALL;
doAction();
}
};
button6.setOnClickListener(listener6);
mHandler = new Handler();
}
public void onStop()
{
super.onStop();
Log.v(tag,"onStop");
}
int cnt = 0;
private Handler mHandler;
int cmd = 0;
final int CMD_ADD = 1;
final int CMD_UPDATE = 2;
final int CMD_QUERY= 3;
final int CMD_QUERY_ALL = 4;
final int CMD_DELETE = 5;
final int CMD_DELETE_ALL = 6;
People people=new People();
class DatabaseThread implements Runnable {
public void run() {
if(dbHelper==null)
dbHelper=new DBHelper(Hello.this);
if (cmd == CMD_ADD) {
people.name="robin"+System.currentTimeMillis()%100;
people.phone=""+System.currentTimeMillis();
people.age=1;
dbHelper.insert(people);
} else if (cmd == CMD_UPDATE) {
people.phone=""+System.currentTimeMillis();
dbHelper.update(people);
} else if (cmd == CMD_QUERY) {
People p=dbHelper.get(people.id);
printPeople(p);
} else if (cmd == CMD_QUERY_ALL) {
List<People> list=dbHelper.getAll();
int total=list.size();
for(int i=0;i<total;i++)
{
printPeople(list.get(i));
}
}
else if (cmd==CMD_DELETE)
{
dbHelper.delete(people.id);
}
else if (cmd==CMD_DELETE_ALL)
{
dbHelper.deleteAll();
}
cnt++;
}
}
void printPeople(People p)
{
Log.i(tag, "id:"+p.id);
Log.i(tag, "name:"+p.name);
Log.i(tag,"phone:"+p.phone);
Log.i(tag,"age:"+p.age);
}
DatabaseThread dataDealer=new DatabaseThread();
void doAction() {
mHandler.post(dataDealer);
}
}
如果插入数据A,B,C,它们的_id为1,2,3,那么如果把他们都删除了,
再插入一条数据,那么它的id为为1而不是4。
因此我就写了这个工具来生成id,它能让生成相同的id相隔尽量的远。
删除时,也要做相应的处理。
实例1:
文件1:
SerialManager.java
package com.teleca;
public class SerialManager {
Node root=null;
long min=Long.MIN_VALUE;
long max=Long.MAX_VALUE;
public
{
}
public
{
if(min>max)
{
long temp=min;
min=max;
max=temp;
}
this.min=min;
this.max=max;
}
{
long temp=0;
Node node=findNode(id);
if(flag)
{
if(node==null)
{
node=findNode(id-1);
if(node!=null)
{
node.data.end=id;
Node node2=findNode(id+1);
if(node2!=null)
{
node.data.end=node2.data.end;
this.removeNode(node2);
}
}
else
{
Node node2=findNode(id+1);
if(node2!=null)
{
node2.data.start=id;
}
else
addNewNode(id,id);
}
}
return;
}
else
{
if(node==null)
return;
Block data=node.data;
if(data.start==data.end)
{
removeNode(node);
}
else if(id==data.start)
data.start=id+1;
else if(id==data.end)
data.end=id-1;
else
{
temp=data.end;
data.end=id-1;
addNewNode(id+1,temp);
}
}
}
public void
{
long temp=0;
if(id1>id2)
{
temp=id1;
id1=id2;
id2=temp;
}
Node node1=findNode(id1);
Node node2=null;
if(node1==null)
{
node1=findNode(id1-1);
if(node1!=null)
{
node1.data.end=id2;
node2=findNode(id2+1);
if(node2!=null)
{
node1.data.end=node2.data.end;
this.removeNode(node2);
}
return;
}
else
{
node2=findNode(id2);
if(node2==null)
{
node2=findNode(id2+1);
if(node2!=null)
node2.data.start=id1;
else
addNewNode(id1,id2);
return;
}
else
{
node2.data.start=id1;
return;
}
}
}
else
{
Block data=node1.data;
if(id2<=data.end)
{
return;
}
else
{
node2=findNode(id2);
if(node2==null)
{
data.end=id2;
return;
}
else
{
data.end=node2.data.end;
removeNode(node2);
}
}
}
}
public long
{
Node node=findNode(cursor);
long start=cursor;
while(node!=null)
{
cursor=node.data.end+1;
if(cursor>max)
cursor=min;
else if (cursor==0)
cursor++;
if(cursor==start)
{
return 0;
}
node=findNode(cursor);
}
long res=cursor;
cursor++;
if(cursor>max)
cursor=min;
else if (cursor==0)
cursor++;
return res;
}
public boolean
return findNode(id)!=null;
}
private Node findNode(long id)
{
Node node=null;
Node tempNode=root;
Block block=null;
while(tempNode!=null)
{
block=tempNode.data;
if(block.start<=id&&id<=block.end)
{
node=tempNode;
break;
}
tempNode=tempNode.next;
}
return node;
}
private void addNewNode(long id1,long id2)
{
Node node=new Node();
node.data=new Block(id1,id2);
addNode(node);
}
private void addNode(Node node)
{
if(root==null)
{
root=node;
node.prev=null;
node.next=null;
return;
}
Node tempNode=root;
while(tempNode!=null)
{
if(tempNode.data.start>node.data.end)
{
if(tempNode==root)
{
node.prev=null;
node.next=root;
tempNode.prev=node;
root=node;
}
else
{
node.prev=tempNode.prev;
node.next=tempNode;
tempNode.prev.next=node;
tempNode.prev=node;
}
break;
}
else if(tempNode.next==null)
{
tempNode.next=node;
node.prev=tempNode;
node.next=null;
break;
}
tempNode=tempNode.next;
}
}
private void removeNode(Node node)
{
Node prev=node.prev;
if(prev==null)
{
root=node.next;
}
else
{
prev.next=node.next;
}
if(node.next!=null)
node.next.prev=prev;
node.prev=null;
node.next=null;
}
Node tempNode=root;
Node node=null;
while(tempNode!=null)
{
node=tempNode;
tempNode=tempNode.next;
node.prev=null;
node.next=null;
}
root=null;
cursor=1;
}
Node tempNode=root;
while(tempNode!=null)
{
System.out.println("start:"+tempNode.data.start+"end:"+tempNode.data.end);
tempNode=tempNode.next;
}
}
}
class Node
{
Node prev=null;
Block data;
Node next=null;
}
class Block
{
long start=0;
long end=0;
Block(long id1,long id2)
{
start=id1;
end=id2;
}
public long getStart() {
return start;
}
public void setStart(long start) {
this.start = start;
}
public long getEnd() {
return end;
}
public void setEnd(long end) {
this.end = end;
}
}
文件2:
DBHelper.java
package com.teleca;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;;
public class DBHelper {
public static String DB_NAME="peopledb";
public static String DB_TABLE_NAME="people";
SQLiteDatabase db;
final DBOpenHelper dbOpenHelper;
final static String COLS[]=new String[]
{"_id","name","phone","age"};
final String tag="hubin";
public DBHelper(Context context)
{
this.dbOpenHelper=new DBOpenHelper(context,DB_NAME,1);
establishDb();
}
SerialManager serialManager=new SerialManager();
private void establishDb()
{
if(db==null)
db=dbOpenHelper.getWritableDatabase();
}
private void
{
serialManager.clear();
Cursor c=db.query(DBHelper.DB_TABLE_NAME, new String[]{"_id"}, null, null, null, null, "_id DESC",null);
c.moveToFirst();
int count=c.getCount();
c.moveToFirst();
long id=0;
for(int i=0;i<count;i++)
{
id=c.getLong(0);
serialManager.setSerial(id, true);
Log.i("hubin", "id :"+id+"set to serial");
c.moveToNext();
}
c.close();
}
public void cleanup()
{
if(db!=null)
{
db.close();
db=null;
}
}
public void insert(People people)
{
ContentValues values=new ContentValues();
values.put("name", people.name);
values.put("phone", people.phone);
values.put("age", people.age);
long id=serialManager.getSerial();
values.put("_id", id);
people.id=db.insert(DBHelper.DB_TABLE_NAME, null, values);
Log.i(tag,"insert:"+people.id);
}
public void update(People people)
{
ContentValues values=new ContentValues();
values.put("name", people.name);
values.put("phone", people.phone);
values.put("age", people.age);
db.update(DBHelper.DB_TABLE_NAME,values,"_id="+people.id,null);
}
public void delete(long id)
{
db.delete(DB_TABLE_NAME, "_id="+id, null);
}
public void deleteAll()
{
db.delete(DB_TABLE_NAME, null, null);
public People get(long id)
{
People people=new People();
Cursor c=null;
try{
c=db.query(DB_TABLE_NAME, COLS,"_id= '"+id+"'",null,null,null,null);
Log.i(tag,"count:"+c.getCount());
if(c.getCount()>0)
{
c.moveToFirst();
people=new People();
people.id=c.getLong(0);
people.name=c.getString(1);
people.phone=c.getString(2);
people.age=c.getInt(3);
}
}catch(SQLException e)
{
Log.i(tag,"",e);
}
finally
{
if(c!=null&&!c.isClosed())
{
c.close();
}
}
return people;
}
public List<People> getAll()
{
ArrayList<People> ret=new ArrayList<People>();
Cursor c=null;
try
{
c=db.query(DB_TABLE_NAME, COLS,null,null,null,null,null);
int count=c.getCount();
c.moveToFirst();
People people;
for(int i=0;i<count;i++)
{
people=new People();
people.id=c.getLong(0);
people.name=c.getString(1);
people.phone=c.getString(2);
people.age=c.getInt(3);
ret.add(people);
c.moveToNext();
}
}catch(SQLException e)
{
Log.i(tag,"",e);
}
finally
{
if(c!=null&&!c.isClosed())
{
c.close();
}
}
return ret;
}
}
class DBOpenHelper extends SQLiteOpenHelper
{
private static final String DB_CREATE="CREATE TABLE "
+DBHelper.DB_TABLE_NAME
+" (_id INTEGER PRIMARY KEY,name TEXT UNIQUE NOT NULL,"
+"phone TEXT,age INTEGER);";
final static String tag="hubin";
public DBOpenHelper(Context context,String dbName,int version)
{
super(context,dbName,null,version);
}
public void onCreate(SQLiteDatabase db)
{
try{
db.execSQL(DB_CREATE);
}
catch(SQLException e )
{
Log.e(tag,"",e);
}
}
public void onOpen(SQLiteDatabase db)
{
super.onOpen(db);
}
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS "+DBHelper.DB_TABLE_NAME);
this.onCreate(db);
}
}
文件3:
People.java
package com.teleca;
public class People {
public long id;
public String name;
public String phone;
public int age;
}
文件4:
Hello.java
package com.teleca;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Hello extends Activity {
DBHelper dbHelper;
final static String tag="hubin";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.Button01);
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
cmd = CMD_ADD;
doAction();
}
};
button.setOnClickListener(listener);
Button button2 = (Button) findViewById(R.id.Button02);
OnClickListener listener2 = new OnClickListener() {
@Override
public void onClick(View v) {
cmd = CMD_UPDATE;
doAction();
}
};
button2.setOnClickListener(listener2);
Button button3 = (Button) findViewById(R.id.Button03);
OnClickListener listener3 = new OnClickListener() {
@Override
public void onClick(View v) {
cmd = CMD_QUERY;
doAction();
}
};
button3.setOnClickListener(listener3);
Button button4 = (Button) findViewById(R.id.Button04);
OnClickListener listener4 = new OnClickListener() {
@Override
public void onClick(View v) {
cmd = CMD_QUERY_ALL;
doAction();
}
};
button4.setOnClickListener(listener4);
Button button5 = (Button) findViewById(R.id.Button05);
OnClickListener listener5 = new OnClickListener() {
@Override
public void onClick(View v) {
cmd = CMD_DELETE;
doAction();
}
};
button5.setOnClickListener(listener5);
Button button6 = (Button) findViewById(R.id.Button06);
OnClickListener listener6 = new OnClickListener() {
@Override
public void onClick(View v) {
cmd = CMD_DELETE_ALL;
doAction();
}
};
button6.setOnClickListener(listener6);
mHandler = new Handler();
}
public void onStop()
{
super.onStop();
Log.v(tag,"onStop");
}
int cnt = 0;
private Handler mHandler;
int cmd = 0;
final int CMD_ADD = 1;
final int CMD_UPDATE = 2;
final int CMD_QUERY= 3;
final int CMD_QUERY_ALL = 4;
final int CMD_DELETE = 5;
final int CMD_DELETE_ALL = 6;
People people=new People();
class DatabaseThread implements Runnable {
public void run() {
if(dbHelper==null)
dbHelper=new DBHelper(Hello.this);
if (cmd == CMD_ADD) {
people.name="robin"+System.currentTimeMillis()%100;
people.phone=""+System.currentTimeMillis();
people.age=1;
dbHelper.insert(people);
} else if (cmd == CMD_UPDATE) {
people.phone=""+System.currentTimeMillis();
dbHelper.update(people);
} else if (cmd == CMD_QUERY) {
People p=dbHelper.get(people.id);
printPeople(p);
} else if (cmd == CMD_QUERY_ALL) {
List<People> list=dbHelper.getAll();
int total=list.size();
for(int i=0;i<total;i++)
{
printPeople(list.get(i));
}
}
else if (cmd==CMD_DELETE)
{
dbHelper.delete(people.id);
}
else if (cmd==CMD_DELETE_ALL)
{
dbHelper.deleteAll();
}
cnt++;
}
}
void printPeople(People p)
{
Log.i(tag, "id:"+p.id);
Log.i(tag, "name:"+p.name);
Log.i(tag,"phone:"+p.phone);
Log.i(tag,"age:"+p.age);
}
DatabaseThread dataDealer=new DatabaseThread();
void doAction() {
mHandler.post(dataDealer);
}
}
- Sqlite中INTEGER PRIMARY KEY的修正
- 关于sqlite中primary key可以输入null的说明
- Sqlite中的rowid字段和integer primary key autoincrement的字段区别
- sqlite数据库默认自增标号RecNo与integer primary key autoincrement的区别?
- INTEGER PRIMARY KEY简介
- INTEGER PRIMARY KEY简介
- INTEGER PRIMARY KEY AUTOINCREMENT 和 INTEGER PRIMARY KEY 区别
- SQLite中的自增关键字:AUTO_INCREMENT、INTEGER PRIMARY KEY与AUTOINCREMENT
- SQL中primary key的作用
- mysql 数据库中 的 primary key and key and index
- key,primary key unique key的区别
- MySQL中primary key和unique的区别
- mysql 数据表中主键(primary key)的操作
- mysql 中key , primary key ,unique key 与index的区别
- candidate key, primary key, superkey的区别
- Unique Key 与 Primary Key 的比较
- MySql 的unique key 与 primary key
- Unique Key 与 Primary Key 的比较
- j2ee Servlet 过滤器
- 网络上的等待事件 —— SQL*Net message from client/dblink
- 沁园春-雪
- 复选框对话框使用
- IOS如何调用WCF服务
- Sqlite中INTEGER PRIMARY KEY的修正
- [开源]在iOS上实现Android风格的控件Toast
- jquery load 获取不到DIV内容
- [笔记]Objective-C <一>
- 几个css技巧
- 小小督办解决管理大问题
- eclipse中加放jQuery.js文件报js语法错误解决办法
- jquery Sortable实例二
- Anroid使用DefaultHttpClient访问Wap网络