Android利用数据库传送数据

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

一.建表 

 //通过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();                    
                }
            }
        });

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。