2012-03-31 6 views
1

私はデータベースにテキストボックスからデータを挿入したい...交流#Webアプリケーションに取り組んでいます....私は、クエリを書かれているが、それは働いていない:C#で挿入クエリを書く方法?

string insertquery = 
    @"INSERT INTO [LocationInfo]([LocationIP], [LocationName]) 
     VALUES ('" + TextBox2.Text + "','" + TextBox3.Text + "') 
     WHERE LocationID=null"; 

SqlCommand cmd = new SqlCommand(insertquery, sqlcon_QOEMetrices); 
cmd.ExecuteNonQuery(); 

sqlcon_QOEMetricesは私のデータベース接続オブジェクトです。任意の構文エラーまたは欠落しているすべての文があるかどうか..

+9

hello sql injection !! – Baz1nga

+5

第1の問題:あなたのコードはSQLインジェクション攻撃に対して脆弱です。 *値をSQLに直接含めないでください。代わりに、パラメータ化されたSQL文を使用してください。第2の問題:「うまくいかない」とは、何が起こっているのか不満な記述です。何が起きているのか教えてください。例外がある場合は、私たちに詳細を教えてください。コンパイルされない場合は、コンパイル時エラーを返します。間違った値を挿入している場合は、そのことを教えてください。 –

+0

クエリー – cichy

答えて

0

は省略.........教えてください

WHERE LocationID=null 

そしてSQLCommandとParametersを好む。 UIコントロール値で文字列を構築しない。

2

あなたはフォームからの直接の値を使用してSQLクエリを連結しないでくださいコマンド

SqlCommand comm = new SqlCommand("INSERT INTO desg VALUES (@txtsno, @txtdesg, @txtbasic)", connection); 

your_db.Open(); 
try { 
    comm.Parameters.AddWithValue("@txtsno", txtsno.Text.Trim()); 
    comm.Parameters.AddWithValue("@txtdesg", txtdesg.Text.Trim()); 
    comm.Parameters.AddWithValue("@txtbasic", txtbasic.Text.Trim()); 
    comm.ExecuteNonQuery(); 
    comm.Dispose(); 
    comm = null; 
} 
catch(Exception ex) 
{ 
    throw new Exception(ex.ToString(), ex); 
} 
finally 
{ 
    your_db.Close(); 
} 
+3

1.誰かが間違った列に挿入するテーブル列を並べ替える場合は、 "INSERT INTO desg"の後に列に名前を付けます。2. SqlConnectionを開くために(最後に部分を削除できます)、3. catchを削除します –

1

を次のようにクエリを記述することができます。

あなたのADO.NETコードは次のようになります。

 string query = "INSERT INTO [LocationInfo]([LocationIP], [LocationName])" + 
         "VALUES (@locIP, @locName)"; 

     SqlCommand cmd = new SqlCommand(query, sqlcon_QOEMetrices); 
     cmd.Parameters.AddWithValue("@locIP", TextBox2.Text); 
     cmd.Parameters.AddWithValue("@locName", TextBox3.Text);   

     try 
     { 
      sqlcon_QOEMetrices.Open(); 

      cmd.ExecuteNonQuery(); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
     finally 
     { 
      sqlcon_QOEMetrices.Close(); 
     } 
+0

私はそんなにありがとう...その作業..ありがとうございました –

+0

私はこの名前の文字列に対応するユーザーの数を数えたいと思います。文字列q = "[UserLocation]からのSELECT COUNT(DISTINCT [UserURI]) WHERE LocationName = 'Powai' "; SqlCommand cmd1 =新しいSqlCommand(q、sqlcon_QOEMetrices); TextBox6.Text = cmd1.ExecuteScalar()。ToString();しかし、エラーが表示されない場合でも動作しません –

+0

まず、あなたはすでにクエリを実行しようとしましたか?エラーが表示されない場合は、クエリが結果を返さない可能性が最も高いです。 Visual Studioでデータベースに接続し、クエリビルダ[http://www.aquafold.com/images/screenshots/visual_query_builder.png](サンプルスクリーンショット)を使用してクエリをビルドしてテストできます。クエリが機能するかどうかがわかります。 – Gondy

0

使用LocationID IS NULL代わりのLocationID = NULL、はい。あなたのクエリは、他の人が言及したように、SQLインジェクション攻撃を受けやすいものです。

関連する問題