1

パラメータを使用して Access データベースにデータを挿入しようとすると、奇妙なエラーが発生します。問題が発生している行は次のとおりです:-

                thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, Date_End, Time_Start, Time_End, Name, Description, Event_Type, Buy_Tickets_URL) VALUES (@VenID, @DStart, @DEnd, @evTime, @evTime, @Name, @Des, @EvType, @SysUrl);";

                //Other Parameters already inserted here
                string desc = GetDesc(rec.EvName);
                thisCommand.Parameters.AddWithValue("@Des", desc);
                thisCommand.ExecuteNonQuery();

他のパラメーターは問題を引き起こしませんが、説明フィールドにデータを挿入しようとすると、フィールドが小さすぎてデータの量を受け入れることができないというデータベース例外が発生します。問題は、プログラムがエラーをスローしたときに 3 文字しか挿入しようとせず、説明フィールドがメモであるため、最大 65000 文字以上を保持できることです。CommandText に値を手動で挿入すると、すべて正常に機能するため、パラメータ プロパティと関係があるはずです。

4

2 に答える 2

1

説明に中かっこを追加する必要があるかもしれません。[Description]

パラメータを次のように変更します。

 thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, Date_End, Time_Start, Time_End, Name, [Description], Event_Type, Buy_Tickets_URL) VALUES (@VenID, @DStart, @DEnd, @evTime, @evTime, @Name, @Des, @EvType, @SysUrl);

            //Other Parameters already inserted here
            string desc = GetDesc(rec.EvName);
           // thisCommand.Parameters.AddWithValue("@Des", desc);
            thisCommand.Parameters.Add("@Des", OleDbType.VarChar, 6000).Value = desc;
            thisCommand.ExecuteNonQuery();

よろしく

于 2012-07-02T03:12:08.650 に答える
1

パラメータ名は単なるガイドです。たとえば、これを実行します。すべてのパラメータが同じ名前であることに注意してください。また、予約語 Name は角括弧でエスケープされていることにも注意してください。

    thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, " +
    "Date_End, [Name], Description, Event_Type, Buy_Tickets_URL) " +
    "VALUES (@VenID, @DStart, @DEnd, @Name, @Des, @EvType, @SysUrl);";


    thisCommand.Parameters.AddWithValue("@Des", 1);
    thisCommand.Parameters.AddWithValue("@Des", DateTime.Now.Date);
    thisCommand.Parameters.AddWithValue("@Des", DateTime.Now.Date);
    thisCommand.Parameters.AddWithValue("@Des", "abc");
    thisCommand.Parameters.AddWithValue("@Des", "abc");
    thisCommand.Parameters.AddWithValue("@Des", 1);
    thisCommand.Parameters.AddWithValue("@Des", "abc");

予約語

于 2012-07-02T09:15:11.997 に答える