---恢复内容开始---

一.建表

 //通过SQLiteDatabase 创建数据库stu.db3
final SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+"/stu.db3", null);
db.execSQL("CREATE TABLE student(id INTEGER PRIMARY KEY, name VARCHAR(50), score INTEGER)"); //创建student学生表

openOrCreateDataBase()方法用来打开或创建数据库。这是一个静态方法,不能用new 创建而是用类名调用。

public static SQLiteGDataBase openOrCreateDataBase(String path,SQLiteDataBase.CusorFactory factory)

第一个参数为数据库文件路径(包括文件名) 可用getFilesDir()来获取路径

第二个参数 一般默认null来使用默认的GursorFactory的对象

二.数据插入

/*
*1 保存操作
*/
save.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) {
/*
* 获取数据
*/
String i = id.getText().toString();
String n = name.getText().toString();
String s = score.getText().toString();
//执行插入语句
try {
db.execSQL("INSERT INTO student VALUES(?,?,?)", new String[]{i,n,s}); // 格式化
} catch (Exception e) { //插入失败
Toast.makeText(MainActivity.this, "该学号已经存在", Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
}
});

三、数据读取

        /*
*2 读取操作并用simpleAdapter在UI界面显示
*/
read.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) { /*
* 绑定数据到listview
*/
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); //从数据库获取数据 添加到 listItem上
Cursor cursor = db.rawQuery("SELECT * FROM student", null);
while(true) { if(cursor.moveToNext() == false) {
break;
} HashMap<String, Object> map = new HashMap<String, Object>();
map.put("itemId", cursor.getInt(0));
map.put("itemName", cursor.getString(1));
map.put("itemScore", cursor.getInt(2));
listItem.add(map);
} //生成适配器 它是数据和界面交互的桥梁 使得数据库SQLite的内容显示在图形用户界面
final SimpleAdapter listItemAdapter = new SimpleAdapter(MainActivity.this,
listItem,R.layout.list_item,
new String[]{"itemId","itemName","itemScore"},
new int[]{R.id.itemId,R.id.itemName,R.id.itemScore}); //添加并显示
list.setAdapter(listItemAdapter); /*
* 3 ListView中列表的点击事件
*/
list.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> arg0, View view,
int position, long arg3) {
// TODO Auto-generated method stub
Map<String,Object> m = (Map<String,Object>)listItemAdapter.getItem(position);
id.setText(m.get("itemId").toString().trim());
name.setText(m.get("itemName").toString().trim());
score.setText(m.get("itemScore").toString().trim()); index = m.get("itemId").toString().trim(); //保存选中的用户id 用于删除和修改 } }); }
});

Android中list与Map<String ,Object>及SimpleAdapter用来存数数据并显示  http://www.360doc.com/content/14/0407/09/12146850_366936905.shtml

SimpleAdapter与listView介绍链接地址1.http://blog.csdn.net/xing1716263268/article/details/7912665

2.  http://blog.csdn.net/conowen/article/details/7294230

四、数据更新

 /*
*更新操作
*/
update.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) { String updateName = name.getText().toString().trim();
String updateScore = score.getText().toString().trim();
String sql = "UPDATE student SET name=?,score=? whrer id= ?";
if(index != null){
try{
Toast.makeText(MainActivity.this, updateName+"--"+updateScore, Toast.LENGTH_SHORT).show();
db.execSQL(sql,new String[]{updateName,updateScore,index});
index = null; //索引重新设置为空
Toast.makeText(MainActivity.this, "修改成功", Toast.LENGTH_SHORT).show(); }catch(Exception e)
{
Toast.makeText(MainActivity.this, "修改失败", Toast.LENGTH_SHORT).show(); }
} }
});

五、数据删除

  /*
* 删除操作
*/
delete.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) {
if(index!=null) { //已经选中某条记录
//执行插入语句
db.execSQL("DELETE FROM student WHERE id=?", new String[]{index});
index = null; //索引重新设置为null Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "请选中要删除的数据", Toast.LENGTH_SHORT).show();
}
}
});

最新文章

  1. HTML5火焰文字特效DEMO演示
  2. call()和原型继承的方法
  3. UIAlertController、UIAlertAction 警告框
  4. Daily Scrum – 1/18
  5. Ⅰ.net通信指前提
  6. Oracle数据库启动时:ORA-00119: invalid specification for system parameter LOCAL_LISTENER; ORA-00132错误解决
  7. mysql升级小结和mysql_upgrade的用途
  8. Spring事务管理中@Transactional的参数配置
  9. SQL存储过程+游标 循环批量()操作数据
  10. RabbitMQ消息队列(二):”Hello, World“
  11. Android源码博文集锦4
  12. 当使用composer安装组件时提示错误
  13. 使用 Hadoop 进行语料处理(面试题)
  14. Android Studio C/C++开发环境配置
  15. Python CRM项目六
  16. angular.js学习笔记(一)
  17. 解决angular ui-grid 中添加input date修改日期
  18. 使用 IIS 在 Windows 上托管 ASP.NET Core2.0
  19. 全局最小割Stoer-Wagner算法
  20. SPI总线协议及SPI时序图详解【转】

热门文章

  1. [转]获得 LayoutInflater 实例的三种方式
  2. 《JAVA NIO》第二章缓冲区
  3. FPGA最小系统分析与电路设计
  4. winston日志管理3
  5. PHP 数组和字符串互相转换实现方法
  6. Netty中BIO,NIO
  7. Oracle Flashback Technologies (总)
  8. 运行sql server profiler所需的权限
  9. JSON 字符串 与 java 对象的转换
  10. eclipse启动无响应,停留在Loading workbench状态