【问题标题】:Insert and Display data SQLite插入和显示数据 SQLite
【发布时间】:2014-09-20 21:41:48
【问题描述】:

我的应用程序中的插入语句有问题。

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 方法,它的设计目的是检索插入“Swimming”到 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类

任何帮助或建议将不胜感激,因为我知道解决方案非常简单。亲切的问候, 康纳

【问题讨论】:

  • 第一个参数是表名。

标签: android sqlite methods insert information-retrieval


【解决方案1】:

db.insert() 中的第一个参数是保存数据的表名。您可以轻松地使用您的字符串 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()”

【讨论】:

  • 塔!避免了问题。看来我不需要 db.close();最后
【解决方案2】:

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

insert(String table, String nullColumnHack, ContentValues values)

所以改变

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

db.insert(TableName, null, cv);

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

更多信息见SQLite insert

【讨论】:

  • @user3872519 乐于助人,享受编码。
猜你喜欢
  • 2013-10-06
  • 2012-12-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
相关资源
最近更新 更多