SQLite的机器人列未找到 [英] SQLite android column not found

查看:84
本文介绍了SQLite的机器人列未找到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿家伙我的code是正确的假设,但即使它给未找到_hour&放错误coloumn; PLZ _min帮助其紧迫:

hey guys my code is correct is assume but even though it gives error coloumn not found for _hour & _min plz help its urgent:

package com.example.ifest;


public class ProfileView extends ListActivity{

int hour,min;
TimePicker tp ;
String e,e1;
static int p = 0;
Spinner spn ;
Button b1,b2,b3;
EditText et;
String str1;
ArrayList<String> list = new ArrayList<String>();
ArrayAdapter<String> adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 
    list.add("Create");
    openDB();
    p++;

    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
    setListAdapter(adapter);      
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    if(position == 0){
        final Dialog build = new Dialog(ProfileView.this);
        build.setTitle("String Name and Details");
        build.setContentView(R.layout.activity_dialog);
        build.show();
        spn = (Spinner)build.findViewById(R.id.spinner1_Dialog);
        et = (EditText) build.findViewById(R.id.editText1_Dialog);
        b2 = (Button) build.findViewById(R.id.button1_Dialog);
        tp = (TimePicker)build.findViewById(R.id.timePicker1_Dialog);
        b3 = (Button)build.findViewById(R.id.button2_Dialog);
        tp.setIs24HourView(true);
        tp.setCurrentMinute(00);

        b2.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                build.dismiss();
                hour = tp.getCurrentHour();
                min = tp.getCurrentMinute();
                list.add(et.getText().toString());
                addDB(et.getText().toString(),spn.getLastVisiblePosition(),hour,min);
                adapter.notifyDataSetChanged();
                setListAdapter(adapter);
            }
        });

        b3.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                build.dismiss();
            }
        });
    }
}

protected void addDB(String name,int id,int h,int m) {
    DBHandler handle = new DBHandler(this);
    SQLiteDatabase db = handle.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put("_name",name);
    if(id == 0)
        cv.put("_type","WIFI");
    else if(id == 1)
        cv.put("_type","BLUETOOTH");
    else if(id == 2)
        cv.put("_type","MEDIA");
    cv.put("_hour", h);
    cv.put("_min", m);
    db.insert("_table", null , cv);
    db.close();
}

private void openDB() {
    if(p != 0){ 
        DBHandler handle = new DBHandler(this);
        SQLiteDatabase db = handle.getReadableDatabase();

        Cursor c = db.rawQuery("SELECT * FROM "+ "_table",null);
        c.moveToFirst();
        while(c.moveToNext()){
            list.add(c.getString(1));
            Log.d("cursor", c.getString(1));
        }
        c.close();
        db.close();
    }
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflate = getMenuInflater();
    inflate.inflate(R.menu.string_main,menu);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater mi = getMenuInflater();
    mi.inflate(R.menu.activity_main, menu);
    return true;
}

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    switch(item.getItemId()){
    case R.id.item1:
        final Dialog build = new Dialog(ProfileView.this);
        build.setTitle("String Name and Details");
        build.setContentView(R.layout.activity_dialog);
        build.show();
        spn = (Spinner)build.findViewById(R.id.spinner1_Dialog);
        et = (EditText) build.findViewById(R.id.editText1_Dialog);
        b2 = (Button) build.findViewById(R.id.button1_Dialog);
        tp = (TimePicker)build.findViewById(R.id.timePicker1_Dialog);
        b3 = (Button)build.findViewById(R.id.button2_Dialog);
        tp.setIs24HourView(true);
        tp.setCurrentMinute(00);

        b2.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                build.dismiss();
                hour = tp.getCurrentHour();
                min = tp.getCurrentMinute();
                list.add(et.getText().toString());
                addDB(et.getText().toString(),spn.getLastVisiblePosition(),hour,min);
                adapter.notifyDataSetChanged();
                setListAdapter(adapter);
            }
        });

        b3.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                build.dismiss();
            }
        });
        break;

    case R.id.item2:
        break;

    case R.id.item3:
        Intent i = new Intent("com.example.ifest.ABOUTUS");
        startActivity(i);
        break;

    case R.id.item4:
        finish();
        break;
    }
    return true;
}

}

和数据库类是:

public class DBHandler extends SQLiteOpenHelper{

private static final String DB_NAME = "event_db";
private static final int DB_VERSION = 1;
private static final String TABLE_NAME = "_table";
private static final String EVENT_NAME = "_name";
private static final String EVENT_ID = "_no";
private static final String EVENT_TYPE = "_type";
private static final String EVENT_HOUR = "_hour";
private static final String EVENT_MINUTE = "_min";


public DBHandler(Context context) {
    super(context, DB_NAME, null, DB_VERSION);

}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + EVENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
                + EVENT_NAME + " TEXT NOT NULL, " + EVENT_TYPE + " TEXT NOT NULL, " + EVENT_HOUR +"  INTEGER, " + EVENT_MINUTE + " INTEGER " + ");");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);        
}

}

有什么不对的SQL exec语句是指任何空间或东西吗?plz帮助

is there anything wrong with the SQL exec statement means any space or something?Plz help

推荐答案

看起来你已经在运行的应用程序后更改内部 DBHandler#的onCreate()表模式至少一次。如果是这样你需要增加 DB_VERSION = 2

It looks like you have changed the table schema inside DBHandler#onCreate() after running the app at least once. If so you need to increment DB_VERSION = 2.

该数据库将不会检查里面的的onCreate()的code为它自己的一个新的模式,你需要告诉数据库查找后修改你取得了他们。要做到这一点最简单的方法是通过增加 DB_VERSION

The database won't check the code inside onCreate() for a new schema on it's own, you need to tell the database to look for changes after you have made them. The easiest way to do this is by increasing the DB_VERSION.

这篇关于SQLite的机器人列未找到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆