C# 使用SQL参数重写
如何重写它,使其使用参数而不是字符串值?我知道如何为一个“SqlCommand”实现它,但我似乎无法在这里实现它C# 使用SQL参数重写,c#,sql-server,parameters,C#,Sql Server,Parameters,如何重写它,使其使用参数而不是字符串值?我知道如何为一个“SqlCommand”实现它,但我似乎无法在这里实现它 protected void searchFill() { orderByString = orderByList.SelectedItem.Value; fieldString = searchTextBox.Text; string sqlStatement = "SELECT * FROM SecureOrders
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
的实例有一个名为SelectCommand
的属性,您可以将参数附加到该属性:
var dataAdapter = new SqlDataAdapter(someQuery, someConnection);
dataAdapter.SelectCommand.Parameters.AddWithValue("@someParam", someVar);
我想这是vb.net吧?您应该将您正在使用的语言添加到问题的标记中。@Neil,如果您在连接中使用using语句,则可能会出现非常大的错误。关闭连接。Dispose will call.Close()我已经更新了我的第一段代码…现在我收到一个错误,错误是“ORDER by number 1标识的SELECT项包含一个变量,作为标识列位置的表达式的一部分。仅当按引用列名的表达式进行排序时,才允许使用变量。”…有什么想法吗?我不相信
orderby
子句可以接受变量。您可能想开始另一个特定于这样做的问题,但首先检查重复的问题。可能已经有人问过了。
var dataAdapter = new SqlDataAdapter(someQuery, someConnection);
dataAdapter.SelectCommand.Parameters.AddWithValue("@someParam", someVar);