2016-03-29 104 views
0
SqlConnection con = new SqlConnection(@"Data Source=shashi-PC\SQLEXPRESS;Initial Catalog=payroll;Integrated Security=True;Pooling=False"); 
     SqlCommand com = new SqlCommand("insert into Leave_trans values(" + txtempid.Text + ",'" + ddlleavetype.SelectedValue + "'," + txtallowedays.Text + "," + txtpendingleave.Text + ",'" + txtleavefrom.Text + "','" + txtleaveto.Text + "'," + txttotalleaves.Text + ")"); 
     com.Connection = con; 
     con.Open(); 
     com.ExecuteNonQuery(); 
     Response.Write("<script>alert('Leave data saved successfully')</script>"); 
     con.Close(); 
+0

私のエラーの解決策を教えてください.... 私のコードは上記の通りです –

+0

解決策を尋ねる必要はありません。そのため、まず質問をしました。また、あなたのパラメータの1つがnullまたは予期しない値であると推測しています。これらの価値観がわからなければ、私たちはあなたを助けることができません。そこにブレークポイントを置き、完成したコマンド文字列を取得します。 – Ageonix

答えて

0

私は問題があなたの質問にあると思います。データベース列のデータ型を提供していませんでした。しかし、あなたの質問から、TextBoxのテキストとDropDownListの選択された項目が挿入されていると仮定します。 TextBoxテキストの場合は、常に文字列型の値が得られ、stringを列に挿入するには、前後に一重引用符''を使用する必要があります。しかし、あなたのクエリでは、あなたの値のパラメータのいくつかのために引用を使用していませんでした。私は前提を作り、あなたに質問をしました。この更新されたものを試してください。

SqlConnection con = new SqlConnection(@"Data Source=shashi-PC\SQLEXPRESS;Initial Catalog=payroll;Integrated Security=True;Pooling=False"); 
     SqlCommand com = new SqlCommand("insert into Leave_trans values(" + "'" + txtempid.Text + "'", "'" + ddlleavetype.SelectedValue + "'","'" + txtallowedays.Text + "'","'" + txtpendingleave.Text + "'", "'" + txtleavefrom.Text + "'","'" + txtleaveto.Text + "'", "'" + txttotalleaves.Text + "')"); 
     com.Connection = con; 
     con.Open(); 
     com.ExecuteNonQuery(); 
     Response.Write("<script>alert('Leave data saved successfully')</script>"); 

しかし、私はあなたのテーブルの主キーのデータ型としてstringを使うべきではありませんが - あなたのためにいくつかの提案を持っている、それがintタイプでなければなりませんし、別の一つは、あなたがから選択した項目のintidを取るべきですあなたのDropDownListはテキストではありません。

1

これは直接あなたの質問に答えていませんが、あなたは(SQLインジェクションなどhereまたはhereについて読むためにいくつかの時間がかかるしてください)SQLクエリを構築するために、ユーザが入力し、使用文字列連結を取るべきではありません。

代わりに完全なクエリを連結し、あなたは、自分の価値観のためのプレースホルダとしてSqlParameterのインスタンスを使用する必要があります。例:ところで

var com = new SqlCommand(
    "insert into Leave_trans values(@empId, @leaveType, @allowedDays, ...)"); 
com.Parameters.Add(new SqlParameter("@empId", txtempid.Text)); 
com.Parameters.Add(new SqlParameter("@leaveType", ddlleavetype.SelectedValue)); 
com.Parameters.Add(new SqlParameter("@allowedDays", txtalloweddays.Text)); 
... 

:あなたの問題の原因は、あなたが正しくないということである内側のご入力をシングルクオートクエリ(例:txtempid.Textは一重引用符ではありません)。 SqlParametersを使用すると、その問題が解決されます。

関連する問題