0

在我的应用程序中,我有 3 个带有一些外键和内部连接查询的 Sqlite 表。

我创建了 DatabaseSqlHelper 类,它保存了我所有的表和列名。

我试图使用这条线来创建一个表

Create Table If Not Exists Users(
           Users.User_Id Varchar(50) Primary Key Not Null,
           Users.Name Varchar(50) Not Null,
           Users.First_Name Varchar(50),
           Users.Profile_Picture Blob);

我一直在 mySql 中对此进行测试,并且没有问题,但是在 Android 上运行它时,我得到:

09-09 17:58:30.350: E/Database(12973): Failure 1 (near ".": syntax error) on 0x1cf850 when preparing 'Create Table If Not Exists Users(Users.User_Id Varchar(50) Primary Key Not Null,Users.Name Varchar(50) Not Null,Users.First_Name Varchar(50),Users.Profile_Picture Blob);'.

我使用 TableName.ColumnName 的原因是因为我在字符串中保存了这样的名称,所以稍后在内部连接中,我会更容易在 Users.Id = TableName.Id 上执行 Inner Join TableName

有没有办法解决它?

4

2 回答 2

1

去掉每列前面的表名和句点。

前任。

Create Table If Not Exists Users(
           User_Id Varchar(50) Primary Key Not Null,
           Name Varchar(50) Not Null,
           First_Name Varchar(50),
           Profile_Picture Blob);

使用 Users.id 可以很好地进行内部连接。您无需在创建表时指定它即可工作。只需在进行连接时指定表名

前任。select Id as Tablename.Id from Tablename inner join Users as U on U.user_id = Tablename.Id

于 2013-09-09T15:12:05.277 回答
0

只需尝试删除User.sql 中的所有内容。

于 2013-09-09T15:15:26.550 回答