0

C# 言語と Visual Studio 2010 および SQL Server 2005 データを使用して ASP MVC 3 アプリケーションを開発しようとしています。データベースにレコードを作成したいのですが、入力したパラメーターが NULL と見なされるため、作成できません (Insert (matricule, ...) ステートメントのパラメーターにカーソルを合わせると、エディターはそれらがNULLであると私に言います)

これは、アプリケーションが表示するエラーです:

The INSERT statement is in conflict with the FOREIGN KEY constraint "FK_Users_Account". The conflict occurred in database "Range" table "dbo.Account", column 'Type_User'.

ステートメントは終了されました。

PSこのステートメントを変更すると:

SqlCommand cmd = new SqlCommand("Insert Into Users(Matricule, Nom_User,PassWord, Type_User )Values('"+Matricule+"','"+Nom_User+"','"+passWord+"','"+Type_User+"')", cn);

これで :

SqlCommand cmd = new SqlCommand("Insert Into Users(Matricule, Nom_User,PassWord, Type_User )Values('user2','anouar','anouar','Admin')", cn);

フォームに値を入力せずに手動で作業しています


答えてくれてありがとう、私はこのようにコードを変更しましたが、常に同じ問題です:

public int Insert(string Matricule, string Nom_User, string passWord, string Type_User, string ID_UF)
    {
        SqlConnection cn = new SqlConnection(@"Data Source = SWEET-DE396641E \ SQLEXPRESS; User Id = adminUser; Password = adminUser; Initial Catalog = Gamme");
        cn.Open();


        string sqlquery = ("Insert Into Users(Matricule, Nom_User,PassWord, Type_User, ID_UF )Values(@Matricule, @Nom_User, @passWord, @Type_User, @ID_UF)");
        SqlCommand cmd = new SqlCommand(sqlquery, cn);


        cmd.Parameters.AddWithValue("@Matricule", this.Matricule);
        cmd.Parameters.AddWithValue("@Nom_User", this.Nom_User);
        cmd.Parameters.AddWithValue("@passWord", this.passWord);
        cmd.Parameters.AddWithValue("@Type_User", this.Type_User);
        cmd.Parameters.AddWithValue("@ID_UF", this.ID_UF);
        return cmd.ExecuteNonQuery();
    }

そして、このエラー: The parameterized query '(@ Matricule nvarchar (4000), @ user_name nvarchar (4000), @ passWord nv' expects parameter @ Club number has not been specified.

4

2 に答える 2

0

データベースの null 値と c# の null 値を混同している可能性があります。null 値がある場合は、DBNull.Value を送信してみてください。

また、パラメーター化されたクエリを使用することをお勧めします。それらはコードを読みやすくし、重大なセキュリティ問題を回避します (これが単なる宿題であっても、安全なコードを実践することが最善です)。

このようなもの(テストされていませんが、コンセプトはここにあります)...

SqlCommand cmd = new SqlCommand("Insert Into Users(Matricule, Nom_User,PassWord, Type_User )Values(@Matricule, @Nom_User, @passWord, @Type_User)", cn);
cmd.Parameters.Add("@Matricule", Matricule ?? DBNull.Value);
cmd.Parameters.Add("@Nom_User", Nom_User?? DBNull.Value);
cmd.Parameters.Add("@PassWord", PassWord?? DBNull.Value);
cmd.Parameters.Add("@Type_User ", Type_User ?? DBNull.Value);
于 2013-04-29T00:20:35.213 に答える