2017-12-17 31 views
0

私は実際にasp.netで新しいです。C#なぜこのコードがうまくいかないのか知りたいのですが。 私がしたいのは、データフォームをSQL Serverデータベースに保存することだけです。クエリは登録フォームのデータを保存しませんasp.net

私は2つのテーブルを持っており、入力したデータフォームをデータベースに保存します。他のテーブルの外部キーとしてそれを保存するために主キーを取得するためのselect文を見てください

String q = "Insert into dbo.requests(request_date,request_type,visit_date,reason,user_id,status_id)values('" + DateTime.Now.ToString() + "','" + DropDownList1.SelectedValue.ToString() + "','" + TextBox8.Text.ToString() + "','" + TextBox9.Text.ToString() + "','"+ 1+"','"+ 2+"')"; 

SqlCommand cmd = new SqlCommand(q, con); 
cmd.ExecuteNonQuery(); 

con.Close(); 

con2.Open(); 

if (con2.State == System.Data.ConnectionState.Open) 
{ 
    String a = "select top 1 request_id from dbo.requests where request_date= CAST(GETDATE() AS DATE and user_id=999 order by request_id DESC "; 

    SqlCommand cmd2 = new SqlCommand(a, con2); 

    int r = cmd2.ExecuteNonQuery(); 
} 

con2.Close(); 

con3.Open(); 

if (con3.State == System.Data.ConnectionState.Open) 
{ 
    String b = "INSERT into dbo.visitor(visitor_Fname,visitor_Mname,visitor_family_name,visitor_id,visitor_mobile,request_id,place_of_work,country_name) values ('" + TextBox1.Text.ToString() + "','" + TextBox2.Text.ToString() + "','" + TextBox3.Text.ToString() + "','" + TextBox4.Text.ToString() + "' , '" + TextBox5.Text.ToString() + "','r', '" + TextBox6.Text.ToString() + "', '" + TextBox7.Text.ToString() + "' )"; 

    SqlCommand cmd3 = new SqlCommand(b, con3); 

    cmd3.ExecuteNonQuery(); 
} 
+1

[SQLインジェクションアラート](http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - SQL文を連結しない** - SQL注入を避けるため** **パラメータ化されたクエリ**を使用してください[Little Bobby Tables](https://xkcd.com/327/)をチェックしてください –

答えて

0

あなたが選択を取得するには、それ

int r = cmd2.ExecuteNonQuery(); 

int r = (int)cmd2.ExecuteScalar(); 

を変更する必要があります1フィールドのみがExecuteNonQueryの代わりにExecuteScalarを使用します。 ExecuteNonQueryは選択フィールドを返しません。

+0

私はそれを変更しましたが、同じ問題のデータは挿入されません! – yara

+0

何か問題がありますか? – lucky

0

データテーブルを使用してrequest_idを変数に保存するだけです。 実際にあなたは間違っているテーブルに 'r'を格納しています。 select文のrequest_idを変数に格納してみてください。

関連する問題