C# 将字符串变量设置为 SQL 字符串语句的参数



我来自Java编程,我最近刚刚尝试学习C#for web(.aspx(。我是新手,仍然熟悉组件以及 C# 组件如何绑定到 SQL Server 数据库。

我在将分配给String变量的TextBoxes值设置到我的 SQL 语句中时遇到问题。

这是我的代码。

protected void Btn_additem_Click(object sender, EventArgs e)
{
String category = "";
String itemName = Tb_itemname.Text;
String code = Tb_itemcode.Text;
String brand = Tb_brand.Text;
String serial = Tb_serial.Text;
String capacity = Tb_capacity.Text;
String version = Tb_version.Text;
if (Rbl_hardsoft.SelectedValue.Equals("Hardware")) 
{
category = "Hardware";
}
else if(Rbl_hardsoft.SelectedValue.Equals("Software"))
{
category = "Software";
}
String SQL = "INSERT INTO ItemMasterData(item_code,item_category, item_name, item_brand,item_serialnumber, item_capacity, item_version) " +
"VALUES(?,?,?,?,?,?,?)";
}

我的目标是能够使字符串变量categoryitemNamecode...等等作为

在Java中,我们通常使用PreparedStatement其中我们使用作为参数,然后我们通过setters设置其值。例如

ps.setString(1,"stringvalue or string variable"); // 1 for the first question mark
ps.setInt(2,intvalueOrintVariable); // 2 for the second question mark

如何在C#中执行此操作?我还不太熟悉DataSource,我希望能够通过代码而不是使用 C# 属性窗口来分配参数。

我将不胜感激任何帮助或实际示例。

谢谢。

使用参数 https://msdn.microsoft.com/library/bb738521(v=vs.100(.aspx

protected void Btn_additem_Click(object sender, EventArgs e)
{
String category = "";
String itemName = Tb_itemname.Text;
String code = Tb_itemcode.Text;
String brand = Tb_brand.Text;
String serial = Tb_serial.Text;
String capacity = Tb_capacity.Text;
String version = Tb_version.Text;
if (Rbl_hardsoft.SelectedValue.Equals("Hardware")) 
{
category = "Hardware";
}
else if(Rbl_hardsoft.SelectedValue.Equals("Software"))
{
category = "Software";
}
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = connection.CreateCommand())
command.CommandText = "INSERT INTO Contacts ItemMasterData(item_code,item_category, item_name, item_brand,item_serialnumber, item_capacity, item_version) VALUES (@item_code,@item_category, @item_name, @item_brand,@item_serialnumber, @item_capacity, @item_version)";
command.Parameters.AddWithValue("@item_code", code );
command.Parameters.AddWithValue("@item_category", category );
command.Parameters.AddWithValue("@item_name", itemName );
command.Parameters.AddWithValue("@item_brand", brand );
.. the rest of parameters...
connection.Open();
command.ExecuteNonQuery();
}

完全可以通过基本的字符串连接和替换来构建 SQL 字符串。但是对于最简单的测试之外的任何内容,或者如果字符串对于您的代码是 100% 的,请不要这样做。

在 C# 中,有参数化查询的整个概念。它实际上独立于预准备语句而存在。使用哪一个取决于您使用的数据库,因为这直接适用于驱动程序: https://msdn.microsoft.com/en-us/library/bb738521(v=vs.90(.aspx

最新更新