简单的Android SQLite数据库插入代码
在创建简单SQLite数据库作为Android应用程序时发现错误简单的Android SQLite数据库插入代码,android,sqlite,Android,Sqlite,在创建简单SQLite数据库作为Android应用程序时发现错误 **03-12 12:57:39.635: E/Database(333): Failure 1 (near "tablefriends": syntax error) on 0x29b2b0 when preparing 'create tablefriends(_id integer primary key autoincrement,name text not null,address text); 当我在activ
**03-12 12:57:39.635: E/Database(333): Failure 1
(near "tablefriends": syntax error) on 0x29b2b0
when preparing 'create tablefriends(_id integer
primary key autoincrement,name text not null,address text);
当我在activity类中编写此代码时,我的应用程序甚至没有运行。但如果我从activity类中删除了这段代码,我的应用程序就会运行,但当我将数据插入数据库时,它会出现异常
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
FriendsDataSource s=new FriendsDataSource(this);
s.closedatabase();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
FriendsDataSource s=new FriendsDataSource(this);
s.opendatabase();
}
public static final String FRIENDS_TABLE_CREATE_STMT="create table"+TABLE_NAME+
"("+COLUMN_ID+" integer primary key autoincrement,"+
COLUMN_FRIEND_NAME+" text not null,"+COLUMN_ADDRESS+" text);";
您在连接字符串时经常遇到间距问题
"create table" + TABLE_NAME // becomes "create tablefriends"
当最终出现奇怪的SQL错误时,最好查看/跟踪生成的字符串,使其与您期望的匹配。在这种情况下,问题顶部的错误消息显示了错误
正确的版本应该是
"create table " + TABLE_NAME // becomes "create table friends"
我想补充一点,您应该在
onResume
中创建一个FriendsDataSource
的对象范围实例,并关闭该实例的数据库,而不是创建两个实例,比如mFriendsSource=newfriendsdatasource(this)
其中mfriendSource
是该类的成员。当我按下“添加好友”@ZaidIqbal的按钮时,它仍然会给我一个异常。在这个问题中,你没有显示任何代码或“添加好友”的异常。在这个问题中,你可能想用你拥有的所有信息开始一个新问题。03-12 16:56:25.652:E/数据库(334):失败1(接近)准备“创建tablefriends(_idInteger主键自动递增,名称文本不为null,地址文本);”时,0x29b268上的“tablefriends”:语法错误)。我已调试代码,并在此行“long id=friendsDB.insert(FriendsMetaData.TABLE_name,null,newFriendValues)中发现异常;"