2017-02-16 11 views
0

asp.net Webフォームからテキストを挿入する必要があります。私の文字列の最後の挿入は、treeviewチェックされた値に基づいて列から値を挿入する必要があります。私は、SQLインジェクションを避けるINSERT文でサブクエリを実行する必要があります。現在のコードでは、select文の値ではなくNULL値が挿入されます。サブクエリasp.netでクエリを挿入

これは私のコードです:

string content = TxtContent.Text; 
string Pagename = txtKeywords.Text; 
string title = TxtPageName.Text; 
string description = TxtDescription.Text; 
string URL = TxtPageName.Text; 
string Keywords = txtKeywords.Text; 
string tree = TreeView1.SelectedValue; 

string query = @"INSERT INTO Menus([content], [Pagename], [title], [description], [Keywords], [url], [ParentMenuId]) " + "Values('" + content + "', '" + Pagename + "', '" + title + "', '" + description + "', '" + Keywords + "', '/" + URL + "', (Select [parentmenuid] from [menus] where [title] ='"+tree+"'))"; 

using (SqlConnection connection = new SqlConnection("Data Source=MYConnectionString")) 
{ 
    using (SqlCommand command = new SqlCommand(query, connection)) 
    { 
     connection.Open(); 
     command.ExecuteNonQuery(); 
    } 
} 
+0

[Sql Injection Attacks](https://en.wikipedia.org/wiki/SQL_injection)を見てください。現在のコードがこの問題で詰まっているからです。 –

答えて

0

MSDNによると、ユーザー、次のような動的なクエリ(http://ud.ht/bDhfチェックステップ3

は、まず "SqlDataAdaptor" のオブジェクトを作成することができますクラス。次に、各変数に対して、任意の名前を割り当ててコマンドに追加します。

using System.Data; 
using System.Data.SqlClient; 

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    DataSet userDataset = new DataSet(); 
    SqlDataAdapter myDataAdapter = new SqlDataAdapter(
     "SELECT au_lname, au_fname FROM Authors WHERE au_id = @au_id", 
     connection);     
    myDataAdapter.SelectCommand.Parameters.Add("@au_id", SqlDbType.VarChar, 11); 
    myDataAdapter.SelectCommand.Parameters["@au_id"].Value = SSN.Text; 
    myDataAdapter.Fill(userDataset); 
} 
+0

SQLインジェクションの指示をありがとう。これで、insertステートメントで援助を受けることができます。現時点では、サブ選択文からの実際のテキストを挿入します。 – Joel