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(?,?,?,?,?,?,?)";
}

我的目标是能够使字符串变量 categoryitemNamecode ...等等成为 的参数?

在 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();
}