插入和显示数据SQLite

时间:2014-07-29 13:33:22

标签: android sqlite methods insert information-retrieval

我的应用程序中的insert语句出现问题。

public void insert() {

    ContentValues cv = new ContentValues();

   cv.put(Training_table.KEY_ACTIVITY,"Swimming");

}

我知道我必须添加一个.insert行,但我不能写它,我试过这个解决方案无济于事:

public void insertRecord() {
    SQLiteDatabase db = ourHelper.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(Training_table.KEY_ACTIVITY,"Swimming");
    db.insert("Get info from db", null, cv);
    db.close(); }

我不确定在db.insert ??

之后第一个参数应该是什么

以下是getAllData方法,该方法仅用于检索插入"游泳"进入KEY_ACTIVITY行并在文本视图中显示它。 (这个课程在下面进一步说明。

public String getAllData(){
    //SQLiteDatabase db = ourHelper.getWritableDatabase();
    String[] columns = {KEY_ROWID, KEY_ACTIVITY};

    Cursor cursor=ourDatabase.query(Training_table.DATABASE_TABLE,columns,null,null,null,null,null);

    StringBuffer buffer=new StringBuffer();
    //Cursor cursor = ourDatabase.query(DATABASE_TABLE,columns,null,null,null,null,null);
    while(cursor.moveToNext())
    {
        int cid=cursor.getInt(0);
        String activity=cursor.getString(1);
        buffer.append(cid+" "+activity+"\n");
    }
    return buffer.toString();
}

下面是我调用方法的类,并将xml文本视图中的文本设置为getAllData字符串中的内容。 它没有更新文本视图,它只是空白而且没有显示任何错误。你能看到代码的任何突出问题吗?

public class Training_table_view extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.training_table_view);

    TextView tv = (TextView)findViewById(R.id.tvTTinfo);//setting up reference
    Button bv = (Button)findViewById(R.id.bViewDetails);

    Training_table info = new Training_table(this);//create training table

    info.open();//open Training table  class
    //info.insertRecord();
    info.insert();//insert data (currently PK id and activity name


    String data = info.getAllData();//return string from get data method


    info.close();

    tv.setText(data);//set text view to the string we got data from


}//onCreate

} // Training_table_view类

我将非常感谢任何帮助或建议,因为我知道解决方案是非常微不足道的。亲切的问候, 康纳

2 个答案:

答案 0 :(得分:2)

db.insert()中的第一个参数是保存数据的表名。您可以轻松使用String Training_table.DATABASE_TABLE:

db.insert(Training_table.DATABASE_TABLE, null, cv);

所有方法" insertRecord()":

    public void insertRecord() {
        SQLiteDatabase db = ourHelper.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(Training_table.KEY_ACTIVITY,"Swimming");
        db.insert(Training_table.DATABASE_TABLE, null, cv);
        db.close(); 

}

请确保您调用方法" insertRecord()"而不是方法" insert()"

答案 1 :(得分:0)

db.insert()中的第一个参数是表名

insert(String table, String nullColumnHack, ContentValues values)

所以改变

db.insert("Get info from db", null, cv);

db.insert(TableName, null, cv);

注意:将 TableName 替换为数据库表

有关详细信息,请参阅SQLite insert