android数据库应用的一个错误

ydww 发布于 2012/03/02 16:14
阅读 405
收藏 0

写了一个数据库应用,原意是想让listview显示所设置的内容,可以调了几个小时,就是不会显示,哪位大侠帮看一下?

数据库帮助类代码:

package yang.myshiyan000;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyDatabaseHelp extends SQLiteOpenHelper{
 private static final String DB_NAME="mydb";
 public MyDatabaseHelp(Context context){
  super(context, DB_NAME, null, 1);
  // TODO Auto-generated constructor stub
  
 }
 @Override
 public void onCreate(SQLiteDatabase db) {
  // TODO Auto-generated method stub
  db.execSQL("CREATE TABLE room(id String, name String, type String)");
  db.execSQL("CREATE TABLE device(id String ,ip String,type String,Roomtype String)");
  
 }

 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  // TODO Auto-generated method stub
  
 }

}
Activity里面有数据库的代码:

private class AddRoomListener implements OnClickListener{

 
  public void onClick(View v) {
   // TODO Auto-generated method stub
   String inRoomID=setRoomID.getText().toString();
   String inRoomName=setRoomName.getText().toString();
   String inRoomType=setRoomType.getSelectedItem().toString();
   if(inRoomID.equals("")){
    Toast.makeText(Set_room.this, "请输入房间ID", Toast.LENGTH_SHORT).show();//判断房间ID是否为空
    return;
   }
   if(inRoomName.equals("")){
    Toast.makeText(Set_room.this, "请输入房间名称", Toast.LENGTH_SHORT).show();//判断房间名称是否为空
    return;
   }
   mydatahelp=new MyDatabaseHelp(Set_room.this);//实例化定义好的数据库帮助类
   db=mydatahelp.getWritableDatabase();
   cursor=db.query("room", null, null,null,null,null,null);//获得查询游标
   while(cursor.moveToNext()){
    if(inRoomID.equals(cursor.getString(0))){
     Toast.makeText(Set_room.this, "输入ID与已有ID重复", Toast.LENGTH_SHORT);
     cursor.close();
     mydatahelp.close();
     db.close();
     return;
    }
    
   }
   ContentValues values=new ContentValues();
   values.put("id", inRoomID);
   values.put("name", inRoomName);
   values.put("type", inRoomType);
   db.insert("room", null, values);//插入数据
   System.out.println("插入成功");
   cursor.close();
   db.close();
   mydatahelp.close();
   Set_room.this.setListData();//设置listview里面的内容
   Toast.makeText(Set_room.this, "添加成功", Toast.LENGTH_SHORT).show();

}

 

 void setListData(){
  mydatahelp=new MyDatabaseHelp(Set_room.this);//实例化定义好的数据库帮助类
  db=mydatahelp.getWritableDatabase();
  cursor=db.query("room", null, null, null, null, null, null);//获得查询游标
  while(cursor.moveToNext()){
   list.add(cursor.getString(cursor.getColumnIndex("type"))
     +" : " + cursor.getString(cursor.getColumnIndex("id"))
     +" : " + cursor.getString(cursor.getColumnIndex("name")));
  }

   adapter = new ArrayAdapter<String>(this,
    R.layout.room_listview, list);
  setRoomList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
  setRoomList.setAdapter(adapter);
  cursor.close();
  db.close();
  mydatahelp.close();

 }

实在是弄到头痛了,一个下午,希望哪位高手帮下忙!

加载中
0
ydww
ydww

提示的错误是:

android.database.sqlite.SQLiteException: table room has no column named name: , while compiling: INSERT INTO room(id, type, name) VALUES(?, ?, ?);
程序可以正常运行,但就是listview里面不会出现内容

0
黄龍
黄龍
- -! 表room中没有name字段.........
0
ydww
ydww
但是上面的代码有name字段啊
0
潘桂良
潘桂良
建议你取出数据库信息,查看数据库是否与自己的的预期设想相一致
0
雨焰
雨焰
用dos命令查看你的数据中信息!还有,给你一个小小的意见,你在创建数据库的时候,你安排的顺序是什么,在你的程序代码中也按照那个顺序来多好啊,我刚看你的代码让我来回拖了好几次,一直以为你写错了呢!
返回顶部
顶部