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 で内部結合 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 に答える