简单的Android SQLite数据库插入代码

简单的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

在创建简单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);
当我在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)中发现异常;"