1
string query = "Create table " + name + 
               " (Manpower_Name NVARCHAR(50), Instance INT, Start NVARCHAR(30), End NVARCHAR(30));";

SQL Server CE データベース (.sdfファイル) 用に C# でこの接続文字列を作成します。しかし、次のようにエラーが発生します。

クエリの解析中にエラーが発生しました。[トークン ライン番号 = 1、トークン ライン オフセット = 77、トークン エラー = 終了]

関数から実行:

public void create_proj_table(string name)
{
    string query = "Create table " + name + " (Manpower_Name NVARCHAR(50), Instance INT, Start NVARCHAR(30), End NVARCHAR(30));";

    //open connection
    if (this.OpenConnection() == true)
    {
        //create command and assign the query and connection from the constructor
        SqlCeCommand cmd = new SqlCeCommand(query, connection);

        //Execute command
        cmd.ExecuteNonQuery();

        //close connection
        this.CloseConnection();
    }
}
4

3 に答える 3

2

End独自のテーブルでは使用できないキーワードですEndDate。代わりに次のようなものを使用してください。

またStart、 とは日付であると想定します。それらを保存する代わりにEndを使用することを強くお勧めします。DATETIMENVARCHAR(30)

したがって、CREATE TBALEステートメントを次のように変更します。

string query =  "CREATE TABLE " + name + 
                " (Manpower_Name NVARCHAR(50), Instance INT, StartDate DATETIME, EndDate DATETIME);";

そして、あなたのコードは問題なく動作するはずです。

于 2013-05-09T15:32:52.407 に答える
1

END という単語は、SQL CE の予約済みキーワードです。使用する必要がある場合は、角括弧で囲む必要があります

string query = "Create table " + name + " (Manpower_Name NVARCHAR(50), " + 
              "Instance INT, Start NVARCHAR(30), [End] NVARCHAR(30));";
于 2013-05-09T15:33:41.123 に答える
1

ENDSqlの予約語です。

string query = "Create table " + name + " (Manpower_Name NVARCHAR(50), Instance INT, Start NVARCHAR(30), End NVARCHAR(30));";

これを使用する必要がある場合、つまり、行の名前を変更したくない場合は、次のように「[]」で囲みます。

string query = "Create table " + name + " (Manpower_Name NVARCHAR(50), Instance INT, Start NVARCHAR(30), [End] NVARCHAR(30));";
于 2013-05-09T15:36:09.760 に答える