1

名前ととが付いたテーブルが3つuserあります。テーブルには登録ユーザーに関する情報が保存され、テーブルにはユーザーがお気に入りのビデオとして選択したビデオに関する情報が保存されます。videorecommendedvideosuserrecommendedvideos

ビデオテーブル  
-------------
変数(pk)、
タイトル、
User(userTblの場合はfk)
ユーザーテーブル
-----------
ユーザー(pk)、
パス
おすすめの動画表
------------------------------
変数(ビデオTBLの場合はpk、fk)、
User(pk、userTBLの場合はfk)、
日にち、
状態

私の問題は、fkの制約を観察しているにもかかわらず、問題が発生した推奨ビデオテーブルにレコードを挿入したい場合です。

com.CommandText = " Insert into recommendedvideos(Variable, User, Date, Status )"
                    + "VALUES(Variable, User, Date, Status )";

            com.Parameters.AddWithValue("@Variable", Variable);
            com.Parameters.AddWithValue("@User", User);
            com.Parameters.AddWithValue("@Date", Date);
            com.Parameters.AddWithValue("@Status", Status);

            connect.Open();
            com.ExecuteNonQuery();
            connect.Close();

このエラーが発生します

子行を追加または更新できません:外部キー制約が失敗します(aspdbrecommendedvideos、CONSTRAINT recommendedvideos_ibfk_1FOREIGN KEY(Variable)REFERENCES videoVariable))

私のコードの何が問題になっていますか?

4

1 に答える 1

1

編集ステートメント内でパラメーターを正しく設定していないことに気付きました! すべてのパラメーターの前に @ を付ける必要があります ( SqlParameterおよび SqlCommandオブジェクトを使用していると仮定します。OleDbCommand を使用している場合は、代わりこの構文を使用します)

com.CommandText = " Insert into recommendedvideos(Variable, User, Date, Status )"
                + "VALUES(@Variable, @User, @Date, @Status )";

        com.Parameters.AddWithValue("@Variable", Variable);
        com.Parameters.AddWithValue("@User", User);
        com.Parameters.AddWithValue("@Date", Date);
        com.Parameters.AddWithValue("@Status", Status);

        connect.Open();
        com.ExecuteNonQuery();
        connect.Close();
于 2012-08-25T08:09:42.527 に答える