SQLitedatabase
1.调用环境下的openOrCreateDataBase(name,mode,factory)返回SQLitedatabase对象
2.调用对象执行execSQL()执行sql语句。如创建表。此方法不推荐用在CRUD上,具体请看源代码
3.close方法是关闭数据库的方法,对于不同Activity之间不允许有一个库的多个实例,看源代码可知-------线程安全
4.存在于 data/data/packagename/databases目录下
一。vo包
package baidu.sqlite.vo;
public class User {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
}
package baidu.sqlite.vo;
public class EditTextInput {
private String now_name;
private int now_age;
public String getNow_name() {
return now_name;
}
public void setNow_name(String now_name) {
this.now_name = now_name;
}
public int getNow_age() {
return now_age;
}
public void setNow_age(int now_age) {
this.now_age = now_age;
}
public EditTextInput() {
super();
}
public EditTextInput(String now_name, int now_age) {
super();
this.now_name = now_name;
this.now_age = now_age;
}
}
二。service包
package baidu.sqlite.service;
import com.example.sqlite.R;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import baidu.sqlite.DBhandle.StatementHandle;
public class ServiceHelp {
public static SQLiteDatabase sqliteDB;
public static String HelpDBtableName;
/**
*
* @param con
* 传入具体的上下文环境。
* @param DBname
* 要创建数据库的名称。
* @param mode
* context的具体模式。
* @return
*/
// 开始时加载数据库
public static void BeginLoadingDB(Context con, String DBname, int mode) {
Log.e("serviceHelp", "执行了biginloadingDB");
sqliteDB = con.openOrCreateDatabase(DBname, mode, null);
Log.e("serviceHelp", "执行了内部openOrcreatedatabase");
}
/**
*
* @param DBtableName
* 输入具体的数据库表名
* @throws Exception
* 数据实例为空抛出异常
*/
// 而后创建或者打开原有表
public static void DBCreateTable(String DBtableName) throws Exception {
if (sqliteDB != null) {
HelpDBtableName = DBtableName;
sqliteDB.execSQL("DROP TABLE IF EXISTS " + DBtableName);
sqliteDB.execSQL("CREATE TABLE "
+ DBtableName
+ "(_id INTEGER PRIMARY KEY AUTOINCREMENT , name VARCHAR , age INTEGER)");
} else {
new Exception("sqliteDB没有实例化,请先保证数据库被加载,参考方法BeginLoadingDB()");
}
}
// 最后插入,删除等语句的执行
/**
*
* @param DBhandleName
* 输入的动作,输入 如insert,updata,select,delete四种以判断具体想要的动作
* @param sqliteDBname
* 输入 被实例化的数据库 而后数据库对象操作具体的动作在statementHandle类中进行 处理
*/
public static void ExecSQLstatement(String DBhandleName,Context context) {
if (DBhandleName.equals("insert")) {
StatementHandle.insertData(sqliteDB, HelpDBtableName);
}
if (DBhandleName.equals("select")) {
StatementHandle.selectData(sqliteDB, HelpDBtableName,context);
}
if (DBhandleName.equals("update")) {
StatementHandle.updateData(sqliteDB, HelpDBtableName);
}
if (DBhandleName.equals("delete")) {
StatementHandle.deleteData(sqliteDB, HelpDBtableName);
}
}
public static void loadDATAeti() {
// TODO Auto-generated method stub
StatementHandle.loadDATAeti();
}
}
三。DBhandle包
package baidu.sqlite.DBhandle;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import com.example.sqlite.R;
public class FloatWindow {
public void inflateFacilitate(Context context, Cursor c) {
View view = LayoutInflater.from(context).inflate(R.layout.item_dalog,
null);
ListView list = (ListView) view.findViewById(R.id.item_list);
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(context,
R.layout.item_layout, c, new String[] { "_id", "name", "age" },
new int[] { R.id.item_id, R.id.item_name, R.id.item_age });
list.setAdapter(cursorAdapter);
DialogHelper(view, context);
}
public void DialogHelper(View view,Context context){
new AlertDialog.Builder(context)
.setIcon(R.drawable.ic_launcher)
.setTitle("查询结果!")
.setView(view)
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).create().show();
}
}
package baidu.sqlite.DBhandle;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import baidu.sqlite.SqlitMainActivity;
import baidu.sqlite.vo.User;
public class StatementHandle {
private static String tidyName;
private static int tidyage;
/**
* 此方法是为了每次输入的值是不确定的,
* 如果点击按钮每次点击后写入的值是不同的所以,
* 点击按钮就要调用此方法
* 以保证数据的及时更新
*/
public static void loadDATAeti() {
tidyName = SqlitMainActivity.eti.getNow_name();
tidyage = SqlitMainActivity.eti.getNow_age();
}
/**
* @param sqliteDBname insert方法插入要表明的数据库名
* @param table 要插入数据的表名
*/
public static void insertData(SQLiteDatabase sqliteDBname, String table) {
ContentValues cv = new ContentValues();
cv.put("name", tidyName);
cv.put("age", tidyage);
sqliteDBname.insert(table, null, cv);
}
/**
* @param sqliteDBname select方法插入要表明的数据库名
* @param table 要插入数据的表名
*/
public static void selectData(SQLiteDatabase sqliteDBname, String table,Context context) {
Cursor cursor = sqliteDBname.rawQuery("select * from " + table, null);
new FloatWindow().inflateFacilitate(context, cursor);
// List<User> list = new ArrayList<User>();
// while (cursor.moveToNext()) {
// int id = cursor.getInt(cursor.getColumnIndex("_id"));
// String name = cursor.getString(cursor.getColumnIndex("name"));
// int age = cursor.getInt(cursor.getColumnIndex("age"));
// User user = new User(id, name, age);
// list.add(user);
// }
}
/**
*@param sqliteDBname delete方法插入要表明的数据库名
* @param table 要插入数据的表名
*/
public static void deleteData(SQLiteDatabase sqliteDBname, String table) {
sqliteDBname.delete(table, "name = ?", new String[] { tidyName });
}
/**
*@param sqliteDBname update方法插入要表明的数据库名
* @param table 要插入数据的表名
*/
public static void updateData(SQLiteDatabase sqliteDBname, String table) {
Log.e("修改", "runing");
ContentValues values = new ContentValues();
values.put("age", tidyage);
sqliteDBname.update(table, values, "name = ?",new String[] { tidyName });
}
}
四。splite包
package baidu.sqlite;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import baidu.sqlite.DBhandle.StatementHandle;
import baidu.sqlite.service.ServiceHelp;
import baidu.sqlite.vo.EditTextInput;
import com.example.sqlite.R;
public class SqlitMainActivity extends Activity {
private Button insertData, selectData, updataData, deleteData;
private EditText inputName, inputAge;
public static EditTextInput eti;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spick);
inputAge = (EditText) findViewById(R.id.age);
deleteData = (Button) findViewById(R.id.deleteData);
insertData = (Button) findViewById(R.id.insertInto);
selectData = (Button) findViewById(R.id.selectData);
updataData = (Button) findViewById(R.id.UpdataData);
inputName = (EditText) findViewById(R.id.name);
try {
ServiceHelp.BeginLoadingDB(SqlitMainActivity.this, "son.db",
Context.MODE_WORLD_READABLE);
ServiceHelp.DBCreateTable("utills");
} catch (Exception e) {
e.printStackTrace();
}
deleteData.setOnClickListener(ls);
insertData.setOnClickListener(ls);
selectData.setOnClickListener(ls);
updataData.setOnClickListener(ls);
}
OnClickListener ls = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int ages=Integer.parseInt(inputAge.getText().toString());
eti = new EditTextInput(inputName.getText().toString(),ages);
ServiceHelp.loadDATAeti();
if (v.getId() == R.id.deleteData) {
ServiceHelp.ExecSQLstatement("delete",SqlitMainActivity.this);
}
if (v.getId() == R.id.insertInto) {
ServiceHelp.ExecSQLstatement("insert",SqlitMainActivity.this);
}
if (v.getId() == R.id.selectData) {
ServiceHelp.ExecSQLstatement("select",SqlitMainActivity.this);
}
if (v.getId() == R.id.UpdataData) {
ServiceHelp.ExecSQLstatement("update",SqlitMainActivity.this);
}
}
};
}