2011-07-14 5 views
1

これを書き換えて、文字列値の代わりにパラメータを使用する方法を教えてください。私は "SqlCommand"のためにそれを行う方法を知っていますが、私はここでそれを動作させることはできません。ここでSQLパラメータを使用した書き換え

protected void searchFill() 
    { 
     orderByString = orderByList.SelectedItem.Value; 
     fieldString = searchTextBox.Text; 
     string sqlStatement = "SELECT * FROM SecureOrders WHERE fName LIKE @fieldString OR lName LIKE @fieldString OR addr LIKE @fieldString OR addr2 LIKE @fieldString OR city LIKE @fieldString OR state LIKE @fieldString OR zip LIKE @fieldString OR zip LIKE @fieldString OR country LIKE @fieldString OR email LIKE @fieldString OR phone LIKE @fieldString OR ccType LIKE @fieldString OR ccNum LIKE @fieldString OR ccExp LIKE @fieldString OR cwaSource LIKE @fieldString OR cwaJoined LIKE @fieldString OR length LIKE @fieldString OR delivery LIKE @fieldString OR price LIKE @fieldString OR url LIKE @fieldString ORDER BY @orderByString"; 
     using (SqlConnection connection = new SqlConnection(connectionString.ToString())) 
     { 
      connection.Open(); 
      SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlStatement, connection); 
      dataAdapter.SelectCommand.Parameters.AddWithValue("@fieldString", fieldString); 
      dataAdapter.SelectCommand.Parameters.AddWithValue("@orderByString", orderByString); 
      SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter); 
      DataSet dataSet = new DataSet(); 

      dataAdapter.Fill(dataSet, "SecureOrders"); 

      DataView source = new DataView(dataSet.Tables[0]); 
      DefaultGrid.DataSource = source; 
      DefaultGrid.DataBind(); 
      connection.Close(); 
     } 
    } 

私はパラメータを使用しています私の他の方法はSqlDataAdapter

protected void updateCheck(bool checkValue, int identity) 
    { 
     string checkStatement = "UPDATE dbo.SecureOrders SET processed = @Processed WHERE IdentityColumn LIKE @identity"; 
     using (SqlConnection connection = new SqlConnection(connectionString.ToString())) 
     using (SqlCommand _check = new SqlCommand(checkStatement, connection)) 
     { 
      _check.Parameters.Add("@Processed", SqlDbType.Bit).Value = checkValue; 
      _check.Parameters.Add("@identity", SqlDbType.Int).Value = identity; 
      connection.Open(); 
      _check.ExecuteNonQuery(); 
      connection.Close(); 
     } 
    } 
+0

私はこれをvb.netとしますか?使用している言語を質問のタグに追加する必要があります。 –

+3

@Marc B:C# –

+0

のように見える@Neil、それは非常にエラーの可能性がありますVB:D – musefan

答えて

2

インスタンスを使用して、添付することができSelectCommandと呼ばれる性質を持っている(私は少しそれらを使用する方法を知っているかを示すために)でありますパラメータ:

var dataAdapter = new SqlDataAdapter(someQuery, someConnection); 
dataAdapter.SelectCommand.Parameters.AddWithValue("@someParam", someVar); 
+0

私は最初のコードを更新しました。エラーが発生しました。「ORDER BYの番号1で識別されるSELECT項目は、変数は、列名を参照する式によって順序付けするときにのみ許可されます。 "....任意の考え?? –

+0

私は 'ORDER BY'節が変数を受け入れることができないと思います。そうすることに固有の別の質問を始めたいかもしれませんが、最初に重複を確認してください。誰かがおそらく既にそれを求めています。 – Yuck

関連する問題