如何在SQliteDatabase中添加表

时间:2014-10-11 06:51:17

标签: android-sqlite

我想在数据库中添加一个表,并希望添加一个列并保存信息并在另一个按钮上检索它,如果表已经存在,它只会插入信息,下面是我使用的代码,但是给出了错误。

Button insert_info=(Button)findViewById(R.id.button1);
insert_info.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        SQLiteDatabase db;
        try
        {
            final EditText txt_field1=(EditText)findViewById(R.id.editText1);
            String Per_Name=txt_field1.getText().toString();

            db=openOrCreateDatabase("sez.db",SQLiteDatabase.CREATE_IF_NECESSARY,null);
            String Query_createTable="CREATE TABLE  sezInformation(Name VARCHAR(100))";
            String Query_insert="insert into sezInformation(Name) values("+Per_Name+")";
            db.execSQL(Query_insert);
        }
        catch(Exception e)
        {
            Toast.makeText(WelomePerson.this, "ERROR"+e.toString(), Toast.LENGTH_LONG).show();
        }
    }
});

每当我输入值代表khan或布局Edittext字段中的任何其他内容时,点击按钮就会显示

No such column :khan while insert into sezInformation (Name) values(khan)

还请告诉我如何在文本视图中检索相同的已保存数据。

2 个答案:

答案 0 :(得分:0)

使用CREATE TABLE IF NOT EXISTS代替CREATE TABLE 另外一定要使用2个不同的execSQL()命令(一个用来创建表,一个用于插入),或者它不会工作,因为你不能一次执行多个命令< /强>

答案 1 :(得分:0)

在SQL中,字符串文字应位于'single quotes'中。否则,它们将被视为列名称等标识符。

更好的是,使用参数:

db.execSQL("insert into sezInformation(Name) values(?)",
    new Object[] { Per_Name });