package com.sqlite.main;

 import java.io.File;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast; public class SqliteActivity extends Activity {
SQLiteDatabase mDb; //SQLiteDatabase 引用
SQLiteDatabaseDao dao;
TextView show; //显示结果 @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.main); //默认创建一个users.db的数据库
dao=new SQLiteDatabaseDao(); //创建一个数据库
Button createDatabase=(Button)findViewById(R.id.createdatabase);
createDatabase.setOnClickListener(createDatabaseClick);
//获取所有数据库
Button getDatabasesList=(Button)findViewById(R.id.getdatabaseslist);
getDatabasesList.setOnClickListener(getDatabaseListClick);
//重命名数据库
Button renameDatabase=(Button)findViewById(R.id.renamedatabase);
renameDatabase.setOnClickListener(renameDatabaseClick);
//删除一个数据库
Button removeDatabase=(Button)findViewById(R.id.removedatabase);
removeDatabase.setOnClickListener(removeDatabaseClick);
//创建一个表
Button createTable=(Button)findViewById(R.id.createtable);
createTable.setOnClickListener(createTableClick);
//获取所有的表
Button getTablesList=(Button)findViewById(R.id.gettableslist);
getTablesList.setOnClickListener(getTablesListClick);
//重命名一个表
Button renameTable=(Button)findViewById(R.id.renametable);
renameTable.setOnClickListener(renameTableClick);
//删除一个表
Button dropTable=(Button)findViewById(R.id.droptable);
dropTable.setOnClickListener(dropTableClick);
//为表添加一个字段
Button addTableColumn=(Button)findViewById(R.id.addtablecolumn);
addTableColumn.setOnClickListener(addTableColumnClick);
//获取表的所有列
Button getTableColumnsList=(Button)findViewById(R.id.gettablecolumnslist);
getTableColumnsList.setOnClickListener(getTableColumnsListClick);
//插入一条数据
Button insertTable=(Button)findViewById(R.id.inserttable);
insertTable.setOnClickListener(insertTableClick);
//查询一条数据
Button queryTable=(Button)findViewById(R.id.querytable);
queryTable.setOnClickListener(queryTableClick);
//更新一条数据
Button updateTable=(Button)findViewById(R.id.updatetable);
updateTable.setOnClickListener(updateTableClick);
//删除一条数据
Button delete=(Button)findViewById(R.id.delete);
delete.setOnClickListener(deleteClick);
//显示结果
show=(TextView)findViewById(R.id.showresult); } /************对按钮事件进行操作的事件响应****************/ //创建一个数据库
OnClickListener createDatabaseClick=new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//创建一个名为students.db的数据库,主要是生成另外一个数据库以示区别
openOrCreateDatabase("students.db",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
show.setText("创建的数据库路径为\n"
+getDatabasePath("students.db")); }
}; //创建一个应用程序数据库的个数(list)的事件响应
OnClickListener getDatabaseListClick=new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
String []dblist=dao.getDatabasesList();
String rs="";
for(String s:dblist){
rs+=s+"\n";
}
show.setText("数据库名称为:\n"+ rs); }
}; //重命名一个数据库的事件响应
OnClickListener renameDatabaseClick=new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//创建一个data.db的数据库,并命名为renamedata.db数据库
openOrCreateDatabase("data.db",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
File f = getDatabasePath("data.db");
File renameFile=getDatabasePath("renamedata.db");
boolean b=f.renameTo(renameFile);
if(b)
show.setText("data.db已经重命名为renamedata.db");
else show.setText("无法重命名");
}
}; //删除一个数据库的事件响应
OnClickListener removeDatabaseClick=new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//删除students.db数据库
dao.dropDatabase("students.db");
//重新获取数据库名称
String []dblist=dao.getDatabasesList();
String rs="";
for(String s:dblist){
rs+=s+"\n";
}
show.setText("数据库students.db已经删除\n现在数据库的名称为:\n"+rs);
}
}; //创建一个表的事件响应
OnClickListener createTableClick=new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//在user.db数据库中插入mytable表,并添加相应的字段
dao.createTable(mDb, "mytable");
show.setText("数据库students.db已经创建mytable表\n"); }
}; //获取一个数据库的所有表个数(list)的事件响应
OnClickListener getTablesListClick=new OnClickListener() {
@Override
public void onClick(View v) {
//显示所有的表的数据
String tableNames=dao.getTablesList(mDb);
show.setText(tableNames);
}
}; //重命名一个表的事件响应
OnClickListener renameTableClick=new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//创建一个testtable的表
dao.createTable(mDb, "testtable");
//将testtable重命名为newtable
boolean b=dao.alterTableRenameTable(mDb, "testtable", "newtable");
if(b)show.setText("testtable已经重命名为\nnewtable表\n");
else show.setText("newtable已经存在\n请删除(drop table)后重试");
}
}; //删除一个表的事件响应
OnClickListener dropTableClick=new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//删除 newtable表
dao.dropTable(mDb, "newtable");
//显示所有的表的数据
String tableNames=dao.getTablesList(mDb);
show.setText("newtable已经删除\n现在表名称为:\n"+tableNames);
}
}; //修改一个表(给表添加一个字段)的事件响应 OnClickListener addTableColumnClick=new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//默认添加一个password字段,类型为varchar,长度为30
boolean b=dao.alterTableAddColumn(mDb, "mytable", "password", " varchar(30)");
if(b)show.setText("已经添加password字段\n字符类型为:varchar\n长度为:30");
else show.setText("mytable表中password字段已经存在");
}
}; //获取一个表的所有列的名称事件响应
OnClickListener getTableColumnsListClick=new OnClickListener() {
@Override
public void onClick(View v) {
String str=dao.getTableColumns(mDb);
show.setText("mytable表的列名:\n"+str);
}
}; //对一个表添加一个数据的事件响应
OnClickListener insertTableClick=new OnClickListener() { @Override
public void onClick(View v) {
User user=new User();
user.setUsername("Mr.Young");
user.setInfo("好学生");
dao.insert(mDb, "mytable", user); Cursor c=dao.getAllData(mDb, "mytable");
if(c.moveToLast()){
String id=c.getString(0);
String username=c.getString(1);
String info=c.getString(2); show.setText("最新添加的一条数据:\n"+"id:"+id+"\nusername:"+username+"\ninfo:"+info);
} }
}; //查询一个表的所有数据记录的事件响应
OnClickListener queryTableClick=new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//默认查询mytable所有数据 Cursor c=dao.getAllData(mDb, "mytable");
String s="";
int columnsSize=c.getColumnCount();
String []columns=c.getColumnNames();
String columnsName="";
//获取表头
for (String col : columns) { columnsName+=col+"\u0020 \u0020";
}
//获取表的内容
while(c.moveToNext()){ for(int i=0;i<columnsSize;i++){
s+=c.getString(i)+"\u0020 \u0020";
}
s+="<br>";
}
show.setText(Html.fromHtml("<h5>"+columnsName+"</h5>"+s));
}
}; //更新一个表的数据的事件响应
OnClickListener updateTableClick=new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Cursor c=dao.getAllData(mDb, "mytable");
if(c.moveToFirst()){ int first=Integer.valueOf(c.getString(0)); //默认修改第一条记录
dao.update(mDb, "mytable", first, "Yong Ming", "学习成绩优异");
Cursor u=dao.queryById(mDb, "mytable", first);
u.moveToFirst();
show.setText("id为:"+first+"的记录已经修改:\nid:"+first+"\nusername:"+u.getString(1)+"\ninfo:"+u.getString(2)); }else show.setText("没有要更新的记录!请添加数据后再作修改");
}
}; //删除一个表的一条数据的事件响应
OnClickListener deleteClick=new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Cursor c=dao.getAllData(mDb, "mytable");
if(c.moveToLast()){
int last=Integer.valueOf(c.getString(0)); //默认删除最后一条记录
boolean b=dao.delete(mDb, "mytable", last);
if(b)
show.setText("成功删除id为:\n"+last+"的记录!");
}
else
show.setText("没有要删除的记录!");
}
}; //退出时关闭数据库
@Override
public void finish() {
// TODO Auto-generated method stub
super.finish();
mDb.close();
} /*******************
*
* 对Sqlite数据库进行操作的类
*
* ****************/
class SQLiteDatabaseDao { public SQLiteDatabaseDao(){
mDb=openOrCreateDatabase("users.db",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
} /************ 对数据库的操作 ***********************/ // 获取所有数据库的名称
public String[] getDatabasesList() {
return databaseList();
} // 创建一个数据库
public void createDatabase(String db) {
openOrCreateDatabase(db, SQLiteDatabase.CREATE_IF_NECESSARY, null);
} // 删除一个数据库
public void dropDatabase(String db) {
try {
deleteDatabase(db);
} catch (SQLException e) {
Toast.makeText(getApplicationContext(), "删除数据库失败",
Toast.LENGTH_LONG).show();
}
} /************ 对数据库的表的属性添加修改操作 ***********************/ // 获取某个数据库的表的名称
public String getTablesList(SQLiteDatabase mDb) { Cursor c = mDb
.rawQuery(
"select name from sqlite_master where type='table' order by name",
null);
String str="";
while (c.moveToNext()) {
str+=c.getString(0)+"\n"; }
return "表的名称为:\n"+str;
} // 创建一个表,默认创建一个username info字段的表,可以在后面的代码中添加相应的列
public void createTable(SQLiteDatabase mDb, String table) {
try {
mDb.execSQL("create table if not exists "+table+" (id integer primary key autoincrement, "
+ "username text not null, info text not null);");
} catch (SQLException e) {
Toast.makeText(getApplicationContext(), "数据表创建失败",
Toast.LENGTH_LONG).show();
}
} // 删除一个表
public void dropTable(SQLiteDatabase mDb, String table) {
try {
mDb.execSQL("drop table if exists " + table);
} catch (SQLException e) {
Toast.makeText(getApplicationContext(), "数据表删除失败",
Toast.LENGTH_LONG).show();
}
} // 修改表--重命名表名
public boolean alterTableRenameTable(SQLiteDatabase mDb, String oldTable,
String newTableName) {
try {
mDb.execSQL("alter table " + oldTable + " rename to "
+ newTableName+";"); } catch (SQLException e) {
Toast.makeText(getApplicationContext(), "数据表重命名失败",
Toast.LENGTH_LONG).show();
return false;
}
return true;
} // 修改表--添加一列
// @table 需要修改的table名
// @column 添加的列的名称
// @type 列的类型,如text,varchar等
public boolean alterTableAddColumn(SQLiteDatabase mDb, String table,
String column, String type) {
try {
mDb.execSQL("alter table " + table + " add column " + column
+ type + " ;");
} catch (SQLException e) {
Toast.makeText(getApplicationContext(), "数据表添加失败",
Toast.LENGTH_LONG).show();
return false;
}
return true;
} // 获取表的列的名称
public String getTableColumns(SQLiteDatabase mDb) {
Cursor c=dao.getAllData(mDb, "mytable");;
String []columns=c.getColumnNames();
String str="";
for (String s : columns) {
str+=s+"\n";
}
return str;
} /************ 对数据库的表数据增删改查操作 ***********************/
// 添加一条数据,默认只向username和info字段添加数据 public long insert(SQLiteDatabase mDb,String table,User user) {
ContentValues values = new ContentValues();
values.put("username", user.getUsername());
values.put("info", user.getInfo());
return mDb.insert(table, null, values);
} /*
* 删除一条数据
*/
public boolean delete(SQLiteDatabase mDb,String table,int id) { String whereClause = "id=?";
String[] whereArgs = new String[] {String.valueOf(id)};
try{
mDb.delete(table, whereClause, whereArgs);
}catch (SQLException e) {
Toast.makeText(getApplicationContext(), "删除数据库失败",
Toast.LENGTH_LONG).show();
return false;
}
return true;
} /*
* 修改一条数据
*/
public void update(SQLiteDatabase mDb,String table,int id,String username,String info) { ContentValues values = new ContentValues();
values.put("username", username);
values.put("info", info);
String whereClause = "id=?";
String[] whereArgs = new String[] { String.valueOf(id) };
mDb.update(table, values, whereClause, whereArgs);
} public Cursor queryById(SQLiteDatabase mDb,String table,int id) { // 第一个参数String:表名
// 第二个参数String[]:要查询的列名
// 第三个参数String:查询条件
// 第四个参数String[]:查询条件的参数
// 第五个参数String:对查询的结果进行分组
// 第六个参数String:对分组的结果进行限制
// 第七个参数String:对查询的结果进行排序
String[] columns = new String[] { "id", "username", "info" };
String selection = "id=?";
String[] selectionArgs = { String.valueOf(id) };
String groupBy = null;
String having = null;
String orderBy = null;
return mDb.query(table, columns, selection,
selectionArgs, groupBy, having, orderBy);
} public Cursor getAllData(SQLiteDatabase mDb,String table) { //遍历表所有数据
return mDb.rawQuery("select * from "+table, null); /** 如果需要返回指定的列,则执行以下语句
String[] columns = new String[] { "id","username", "info" };
// 调用SQLiteDatabase类的query函数查询记录
return mDb.query(table, columns, null, null, null, null,
null);
*/
} } }
package com.sqlite.main;

public class User {

    private int userId;
private String username;
private String info; public int getUserId() {
return userId;
} public void setUserId(int userId) {
this.userId = userId;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getInfo() {
return info;
} public void setInfo(String info) {
this.info = info;
} }
 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" > <Button
android:id="@+id/createdatabase"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="create database" /> <Button
android:id="@+id/getdatabaseslist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="get databases list" />
</TableRow> <TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" > <Button
android:id="@+id/renamedatabase"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="rename database" /> <Button
android:id="@+id/removedatabase"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="remove database" />
</TableRow> <TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" > <Button
android:id="@+id/createtable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="create table" /> <Button
android:id="@+id/gettableslist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="get tables list" />
</TableRow> <TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" > <Button
android:id="@+id/renametable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="rename table" /> <Button
android:id="@+id/droptable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="drop table" />
</TableRow> <TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" > <Button
android:id="@+id/addtablecolumn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="add column" /> <Button
android:id="@+id/gettablecolumnslist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="get columns list" />
</TableRow> <TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" > <Button
android:id="@+id/inserttable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="insert" /> <Button
android:id="@+id/querytable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="query" />
</TableRow> <TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" > <Button
android:id="@+id/updatetable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="update" /> <Button
android:id="@+id/delete"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="delete" />
</TableRow> <ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content" > <TextView
android:id="@+id/showresult"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</ScrollView> </LinearLayout>

android 对sqlite数据库的增删改查等各种操作的更多相关文章

  1. Android中Sqlite数据库进行增删改查

    今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...

  2. Android对Sqlite数据库的增删改查

    SqLite 数据库 Google 为我们提供了sqlite相关的api SqLiteOpenHelper 这是一个抽象的类 如果想要使用的话,需要其他的类去继承他 SqLiteDatabase 类 ...

  3. Android学习---SQLite数据库的增删改查和事务(transaction)调用

    上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代 ...

  4. andorid SQLite数据库的增删改查 和事务操作

    .xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...

  5. Android下利用SQLite数据库实现增删改查

    1: 首先介绍如何利用adb查看数据库 1: adb shell 2: cd /data/data/包名/databases 3:  sqlite3 数据库 4   接下来就可以进行数据库的sql语法 ...

  6. [Android] SQLite数据库之增删改查基础操作

        在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...

  7. greendao对SQLite数据库的增删改查操作

    利用greendao操作数据库时,都是以对象或者对象的list来进行增删改查的操作,操作的结果都是用一个list来接收的!!! 1.增加一条记录 Stu stu01=new Stu();stu01.s ...

  8. SQLite数据库以及增删改查的案例

    Android使用开源的与操作系统无关的SQL数据库——SQLite 一:在命令行下创建数据库: 1.启动模拟器后,打开命令行,执行adb shell 2.进入所在工程目录 3.执行sqlite3 m ...

  9. Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985转载请说明出处. 下面是代码: 增加:insert into 数据表(字段1,字段2,字段3) valu ...

随机推荐

  1. 用户管理-------userManage

      mysql的登录用户密码修改 step1: kill 系统了的mysql进程 step2: 用以下命令启动mysql,以不检查权限的方式启动 #mysqld_safe -skip-grant-ta ...

  2. CSharper~

    昨天晚上开始,重启读clr via c#大计.Jeffery大神的大作基本上没人不推荐的,所以我也抱了很大的期待,希望读完以后对.net的认识能有质的飞跃.争取五月份内读完.昨天看完了第一章,感觉.n ...

  3. 使用burpsuite抓android包

    1.让Android手机和PC连入同一个网段的wifi,即在同一个无线局域网环境下. 2. 查看PC的IP地址,cmd输入ipconfig命令 3.打开Burpsuite,设置Proxy Listen ...

  4. js中属性和方法的类型和区别

    对象的属性:私有属性(var).类属性(静态属性).对象属性(this).原型属性(prototype). 对象的方法: 私有方法(funtion).类方法(静态方法).对象方法(this).原型方法 ...

  5. Geolocation API 原理及方法

    使用IP地址:基于Web的数据库:无线网络连接定位:三角测量:GPS技术:来测量经度和纬度.(综合了所有技术)地理定位的精确度,有很多方法可以定位用户的地理位置,并且每种方法都有不同的精度.桌面浏览器 ...

  6. HDU-2825 Wireless Password(AC自动机+状压DP)

    题目大意:给一系列字符串,用小写字母构造出长度为n的至少包含k个字符串的字符串,求能构造出的个数. 题目分析:在AC自动机上走n步,至少经过k个单词节点,求有多少种走法. 代码如下: # includ ...

  7. Linear Algebra Lecture5 note

    Section 2.7     PA=LU and Section 3.1   Vector Spaces and Subspaces   Transpose(转置) example: 特殊情况,对称 ...

  8. How to create/restore a slave using GTID replication in MySQL 5.6

    MySQL 5.6 is GA! Now we have new things to play with and in my personal opinion the most interesting ...

  9. oracle创建删除用户和表空间

    创建用户:sqlplus /nologconn / as sysdba;create user username identified by passwordgreant dba to usernam ...

  10. PLC数据访问

    PLC是很多机床设备上都有的控制中心,和PLC通信是很多做工厂管理系统的必经之路. 一年前有个项目需要和PLC(西门子S200)通信,不仅读取里面的数据,还需要写数据需要控制机床的运行,当时不大了解, ...