gpt4 book ai didi

c# - 传递 C# 变量并将其用作 SQL 语句查询中的列值

转载 作者:行者123 更新时间:2023-11-30 19:11:10 25 4
gpt4 key购买 nike

我需要使用一个变量的值作为我正在生成的 SQL 插入查询中的字段之一。在 PHP 中我这样做:

if($currency = "USD")
{
$columntoinsert = "USD_Currency";
}
else
{
$columntoinsert = "";
}

然后在我的 SQL 语句中,我会像这样执行查询:

$sqlinsertpayment = sqlsrv_query($connect,"INSERT INTO Payments_TBL(column1,column2,$columntoinsert,columnn)VALUES(????)",$params) or die("An error occurred trying to execute the statement");  

我想在 C# 中做同样的事情。我有以下代码来设置我要使用的列

var amountfield = "";
if (save_currency != "USD")
{
amountcolumn = "Amount";

}
else
{
amountcolumn = "USD_Amount";
}

但是我无法执行我的 sql 查询,因为尝试在查询字符串中使用 amountcolumn 会生成 Invalid column name 错误,这是预期的。如何以这种方式使用变量:

var sql = new sqlCommand("INSERT INTO Payments_TBL(column1,column2,myc#variablevaluehere,column3,....)Values(@value,@value,@value)",new sqlConnection(conn)); 

对其他选择持开放态度。我们将不胜感激。

最佳答案

因为 amountfield 的值来自您的代码逻辑,您可以安全地这样做:

var sql = new sqlCommand(String.Format("INSERT INTO Payments_TBL(column1,column2,{0},column3,....)Values(@value,@value,@value)", amountcolumn),new sqlConnection(conn));

但是永远不要对来自您的用户的字符串做这样的事情,因为这会让您很容易被 SQL 注入(inject)攻击。

关于c# - 传递 C# 变量并将其用作 SQL 语句查询中的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com