在我的应用程序中,我有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
有没有办法解决它?
答案 0 :(得分: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
答案 1 :(得分:0)
尝试删除sql中的所有User.
。