好的,所以我不知道问题是什么。我收到一条错误消息,指出sender_id列不存在。我有两个表,用户表创建得很好,所有列名都是常量。
public String CREATE_USER_TABLE = "CREATE TABLE " + TableData.TableInfo.USER_TABLE +
" ( "+ TableData.TableInfo.USER_NAME +" TEXT PRIMARY KEY, "
+ TableData.TableInfo.USER_PASS +" TEXT, "
+ TableData.TableInfo.USER_FNAME + " TEXT, "
+ TableData.TableInfo.USER_LNAME + " TEXT);";
//Create Message table
public String CREATE_MSG_TABLE = "CREATE TABLE " + TableData.TableInfo.MSG_TABLE +
" ( " + TableData.TableInfo.MESSAGE_ID + " INTEGER PRIMARY KEY, "
+ TableData.TableInfo.RECEIVER_ID + " TEXT, "
+ TableData.TableInfo.SENDER_ID + " TEXT, "
+ TableData.TableInfo.MESSAGE + " TEXT, "
+ TableData.TableInfo.STATUS + " INTEGER);";
用户表创建得很好,我没有问题访问信息。但是我在尝试访问消息表时遇到错误。
public void onCreate(SQLiteDatabase sdb){
sdb.execSQL(CREATE_USER_TABLE);
Log.d("Database operations", "Table1 created");
sdb.execSQL(CREATE_MSG_TABLE);
Log.d("Database operations", "Table2 created");
}
这是我查询表以添加行的地方。
public void putInformationMsgTable(DatabaseOperations dop,String senderID,String receiverID, String text, int status)
{
SQLiteDatabase SQ = dop.getWritableDatabase();
SQ.execSQL("INSERT INTO " + TableData.TableInfo.MSG_TABLE +
" (" + TableData.TableInfo.MESSAGE_ID +
", " + TableData.TableInfo.RECEIVER_ID +
", " + TableData.TableInfo.SENDER_ID +
", " + TableData.TableInfo.MESSAGE +
", " + TableData.TableInfo.STATUS + ")" +
" VALUES (" + null + ", "
+ receiverID + ", "
+ senderID + ", "
+ text + ", "
+ status + ")");
Log.d("Database operations", "One row inserted into message table");
}
我知道在这个主题上有很多线索,但我的教授和我都很难过。我的语法似乎是正确的,没有理由不这样做。有什么想法吗?!
编辑:这些是我正在使用的常数 **我还将常量MESSAGE_ID的值更改为msg_id,现在错误显示“table msg_info没有名为msg_id的列(代码1)”
//User Table
public static final String USER_NAME = "user_name";
public static final String USER_PASS = "user_pass";
public static final String USER_FNAME = "user_fname";
public static final String USER_LNAME = "user_lname";
public static final String DATABASE_NAME = "user_info";
public static final String USER_TABLE = "user_info";
//Message Table
public static final String MESSAGE_ID = "rowid";
public static final String RECEIVER_ID = "receiver_id";
public static final String SENDER_ID = "sender_id";
public static final String MESSAGE = "message";
public static final String STATUS = "status";
public static final String MSG_TABLE = "msg_info";
答案 0 :(得分:2)
rowid不能是有效的列名。
就像在编程中使用 if 变量一样。我们不能使用它,因为它是一个保留关键字。 这个词已被保留。
请参阅here
解决方案将使用 row_id 之类的内容作为MESSAGE_ID