2016-12-08 10 views
0

私はUnity 5.4でSQLiteを使用してインベントリシステムを作成していますが、構文を理解することができず、どこでも良い例を見つけることはできません。アイデア?Mono.Data.SqliteClientライブラリを使用したSQLite構文

public void GetInventory(string _user, string _container) { 
    ExecuteSQL("SELECT User (Name), Modifier (ModName), Property (PropName) " + 
     "FROM User " + 
      "[INNER] JOIN Ownership " + 
      "[INNER] JOIN Container " + 
       "[INNER] JOIN Inventory " + 
        "[INNER] JOIN Item " + 
         "[INNER] JOIN Property " + 
          "[INNER] JOIN Modifier " + 
           "ON User (UserID) = Ownership (UserID) " + 
           "AND Ownership (ContainerID) = Container (ContainerID) " + 
           "AND Container (ContainerID) = Inventory (ContainerID) " + 
           "AND Inventory (ItemID) = Item (ItemID) " + 
           "AND Item (PropertyID) = Property (PropertyID) " + 
           "AND Item (ModifierID) = Modifier (ModifierID) " + 
          "WHERE User (Name) = '" + _user + "' AND Container (ContainerName) = '" + _container + "'", false); 
} 

私は簡単なコマンドでこの機能をテストしても問題なく動作します。そして私はDBマネージャーの機能をテストしました。 私はSQLite構文のこの風味に慣れていないので、良い例はどこにも見つかりません。誰がこれが間違っているのかを指摘できますか?

「このような機能はありません:ユーザー」

+0

'このような機能はありません:User' ...' WHERE User(Name) 'のようなものに起因する可能性があります。 SQLiteやANSI準拠のようには見えません。 –

+0

私はC#で書いています。これが送信される場所です:http://filesbit.ch/u/i/8f87af392b51b2cfaa64b104a8d9a2f5.png まだ何もしていません。私はちょうどそれをコンパイルするようにしようとしています。 –

答えて

1

クエリの構文はオフです。これは、このクエリを作成する方法です。

SELECT t1.name, 
     t7.ModName, 
     t6.PropName 
FROM User t1 
INNER JOIN Ownership t2 
    ON t1.UserID = t2.UserID 
INNER JOIN Container t3 
    t2.ContainerID = t3.ContainerID 
INNER JOIN Inventory t4 
    ON t3.ContainerID = t4.ContainerID 
INNER JOIN Item t5 
    ON t4.ItemID = t5.ItemID 
INNER JOIN Property t6 
    ON t5.PropertyID = t6.PropertyID 
INNER JOIN Modifier t7 
    ON t5.ModifierID = t7.ModifierID 
WHERE t1.Name = '" + _user + "' AND 
     t3.ContainerName = '" + _container + "'" 

私は.NETでのSQLiteで働いたことがありませんが、あなたの構文は、私が知っている何も続かないので、それは問題ではありません。ところで、あなたの即時のエラーはおそらく、このによって引き起こされた:

SELECT User (Name) 

SQLiteのは、あなたがUserという名前の関数を呼び出すようにしようとしていると考えています。その他の大きな問題は、結合後にすべてのON句をまとめることです。 ON句は、各結合の後に表示する必要があります。

+0

優れています。ありがとう、それは動作します。 –

関連する問題