C# 将字符串变量设置为 SQL 字符串语句的参数
C# setting String variables as argument for SQL string statement
我来自 Java 编程,最近刚尝试学习 C# for web (.aspx
)。我是新手,仍在熟悉组件以及 C# 组件如何绑定到 SQL 服务器数据库。
我无法将分配给 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(?,?,?,?,?,?,?)";
}
我的目标是能够使字符串变量 category
、itemName
、code
...等等成为 的参数?
在 Java 中,我们通常使用 PreparedStatement
,其中我们使用 ? 作为参数,然后我们通过设置器设置它的值。例如,
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# 属性 window.[= 来分配参数21=]
如果有任何帮助或实际示例,我将不胜感激。
谢谢。
完全可以通过基本的字符串连接和替换来构建 SQL 字符串。但是对于超出最简单测试的任何事情,或者如果字符串对您的代码而言是 100%,则不要这样做。
在 C# 中有参数化查询的整个概念。它实际上独立于准备好的语句而存在。使用哪一个取决于您使用哪个数据库,因为它直接与驱动程序一起工作:
https://msdn.microsoft.com/en-us/library/bb738521(v=vs.90).aspx
使用参数
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();
}
我来自 Java 编程,最近刚尝试学习 C# for web (.aspx
)。我是新手,仍在熟悉组件以及 C# 组件如何绑定到 SQL 服务器数据库。
我无法将分配给 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(?,?,?,?,?,?,?)";
}
我的目标是能够使字符串变量 category
、itemName
、code
...等等成为 的参数?
在 Java 中,我们通常使用 PreparedStatement
,其中我们使用 ? 作为参数,然后我们通过设置器设置它的值。例如,
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# 属性 window.[= 来分配参数21=]
如果有任何帮助或实际示例,我将不胜感激。
谢谢。
完全可以通过基本的字符串连接和替换来构建 SQL 字符串。但是对于超出最简单测试的任何事情,或者如果字符串对您的代码而言是 100%,则不要这样做。
在 C# 中有参数化查询的整个概念。它实际上独立于准备好的语句而存在。使用哪一个取决于您使用哪个数据库,因为它直接与驱动程序一起工作: https://msdn.microsoft.com/en-us/library/bb738521(v=vs.90).aspx
使用参数 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();
}