2017-07-13 12 views
0

ここでは、 DBに詳しく、私は私の最後で解決しようとしているが、そう{"パラメータ化されたクエリ '(@Usr_Name nvarchar(4000).... nv'は、提供されなかったパラメータ '@Usr_Name'を要求します)"}

public ActionResult Create(UserModel usr) 
{ 
    con.Open(); 
    string query = "Insert into Tbl_User Values(@Usr_Name,@FirstName,@LastName,@Gender,@Phone,@Address,@Email)"; 
    SqlCommand cmd = new SqlCommand(query, con); 
    SqlParameter usrname = cmd.Parameters.AddWithValue("@Usr_Name", usr.Usr_Name); 
    if (usr.Usr_Name == null) 
    { 
     usrname.Value = DBNull.Value; 
    } 
    SqlParameter fname = cmd.Parameters.AddWithValue("@FirstName", usr.First_Name); 
    if (usr.First_Name == null) 
    { 
     fname.Value = DBNull.Value; 
    } 
    cmd.Parameters.AddWithValue("@LastName", usr.Last_Name); 
    cmd.Parameters.AddWithValue("@Gender", usr.Gender); 
    cmd.Parameters.AddWithValue("@Phone", usr.Phone); 
    cmd.Parameters.AddWithValue("@Address", usr.Address); 
    cmd.Parameters.AddWithValue("@Email", usr.Email); 
    cmd.ExecuteNonQuery(); 

    return RedirectToAction("Index"); 
} 
+0

値は 'AddWithValue' *がそれを混乱さの間に' null'なのでの*であることかしら行うことができません;。あなたは 'CMDを試みることができます.Parameters.AddWithValue( "@ Usr_Name"、((object)usr.Usr_Name)?DBNull.Value); '? –

+0

また、何かが間違っているかもしれないことを説明するために読む価値があります:[AddWithValueの使用を中止できますか?] (https://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-alrea dy /) –

+0

同様の問題:https://stackoverflow.com/questions/23448403/the-parameterized-query-expects-the-parameter-units-which-was-not-supp。それはMarcが提案したのと同様の解決策を含んでいます。 –

答えて

-1
Comment : // Problem in your query. Please write Actual DB Field Name of 
your SQL in below line. 

public ActionResult Create(UserModel usr) 
{ 
    con.Open(); 
    Comment : // Problem in your query. Please write Actual DB Field Name 
        of your SQL in below line. 

string query = "Insert into Tbl_User 
(Field1,Field2,Field3,Field4,Field5,Field6,Field7) 
Values(@Usr_Name,@FirstName,@LastName,@Gender,@Phone,@Address,@Email)"; 
    SqlCommand cmd = new SqlCommand(query, con); 
    SqlParameter usrname = cmd.Parameters.AddWithValue("@Usr_Name", 
    usr.Usr_Name); 
if (usr.Usr_Name == null) 
{ 
    usrname.Value = DBNull.Value; 
} 
SqlParameter fname = cmd.Parameters.AddWithValue("@FirstName", usr.First_Name); 
if (usr.First_Name == null) 
{ 
    fname.Value = DBNull.Value; 
} 
cmd.Parameters.AddWithValue("@LastName", usr.Last_Name); 
cmd.Parameters.AddWithValue("@Gender", usr.Gender); 
cmd.Parameters.AddWithValue("@Phone", usr.Phone); 
cmd.Parameters.AddWithValue("@Address", usr.Address); 
cmd.Parameters.AddWithValue("@Email", usr.Email); 
cmd.ExecuteNonQuery(); 

return RedirectToAction("Index"); 
} 
+0

SQLデータベースの元のフィールド名を書き込む 例:フィールド1 - >実際のDBフィールド名 – Dilip

+2

テーブルに挿入してすべての列の順序と精度を一致させる場合、フィールド名は不要です – pinkfloydx33

関連する問題