C#设置字符串变量作为SQL字符串语句的参数
我来自Java编程,最近刚刚尝试学习C#for web(C#设置字符串变量作为SQL字符串语句的参数,c#,asp.net,sql-server,datasource,C#,Asp.net,Sql Server,Datasource,我来自Java编程,最近刚刚尝试学习C#for web(.aspx)。我是新来的,仍然熟悉组件以及C#组件如何绑定到SQL Server数据库 我无法将文本框中分配给字符串变量的值设置到我的SQL语句中 这是我的密码 protected void Btn_additem_Click(object sender, EventArgs e) { String category = ""; String itemName = Tb_itemname.Text; Str
.aspx
)。我是新来的,仍然熟悉组件以及C#组件如何绑定到SQL Server数据库
我无法将文本框
中分配给字符串
变量的值设置到我的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
,其中我们使用?作为参数,然后通过setter设置其值。比如说,
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#properties窗口来分配参数
我将感谢任何帮助或实际例子
谢谢 完全可以通过基本字符串连接和替换来构建SQL字符串。但是,对于最简单的测试之外的任何内容,或者如果字符串100%用于您的代码,请不要这样做 在C#中,有一个参数化查询的完整概念。它实际上独立于预先准备好的语句而存在。使用哪一个取决于您使用的数据库,因为它直接与驱动程序一起工作: 使用参数
搜索是一个可以交谈的好朋友,特别是因为他/她是许多此类问题的预言家。您不是第一个在C#中使用“参数化查询”的人。您不会是最后一个。另外,在问题中包括实际的数据源使用情况以获得更好的回答。.OP可能重复表示使用了数据源。@user2864740:通常数据源(其中任何一个)只是将大量SQL命令(添加、删除)包装在您的本机代码中。所以这并不是这个代码有效的参数。但是有很多名为“DataSource”的类,每个类的工作方式都不同。我认为在Parametized Query和PrimeSt声明中考虑的最大区别是,在参数化查询下,该语句是在客户端编写的。没有必要进行“准备”步骤。我发现准备好的语句很难学习和实现,因为与参数化查询不同。OP承认这一点。事实上,他/她问如何在C#中使用Java“PreparedStatement”的等价物。再次说明这一点并不能回答问题。此外,OP正在使用数据源。
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();
}