gpt4 book ai didi

c# - C# 字符串中的 SQL 语法错误

转载 作者:太空宇宙 更新时间:2023-11-03 21:28:18 24 4
gpt4 key购买 nike

我正在从 Web 表单运行查询以更新记录。由于我刚刚学习 C#,因此我使用的是命令字符串而不是存储过程。

我的更新方法如下:

public void updateOne()
{
string commandText = "update INVOICE SET <Redacted> = @<Redacted>,
Supplier = @Sup, SupplierName = @SupN, NetTotal = @Net,
VATTotal = @VAT, InvoiceDate = @InvDt "
<needed a line break here, which is why I split the string again>
+ "WHERE K_INVOICE = @K_INV";

using (SqlConnection dbConnection = new SqlConnection
(conParams.connectionString))
{
SqlCommand cmd = new SqlCommand(commandText, dbConnection);
cmd.Parameters.Add("@K_INV", SqlDbType.Int);
cmd.Parameters["@K_INV"].Value = @K_INV;

cmd.Parameters.AddWithValue("@<Redacted>", @<Redacted>.ToString());
cmd.Parameters.AddWithValue("@Sup", @Sup.ToString());
cmd.Parameters.AddWithValue("@SupN", @SupN.ToString());
cmd.Parameters.AddWithValue("@Net", @Net.ToString());
cmd.Parameters.AddWithValue("VAT", @VAT.ToString());
cmd.Parameters.AddWithValue("@InvDt", @InvDt.ToString());

try
{
dbConnection.Open();
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
errorString = e.Message.ToString();
}
}
}

Catch 因 SQL 错误(SET 附近的语法不正确)而停止,我认为问题的发生是因为我将参数转换为字符串。第一个参数是一个Int,应该可以。

如果是这种情况,我应该将参数转换成什么?如果不是,到底哪里出了问题?

最佳答案

尝试在escape the breaklines 的字符串前添加一个@ , 例如:

string commandText = @"update INVOICE SET [Redacted] = @Redacted, 
Supplier = @Sup, SupplierName = @SupN, NetTotal = @Net,
VATTotal = @VAT, InvoiceDate = @InvDt "
+ "WHERE K_INVOICE = @K_INV";

在 parameterName 参数中,您可以添加 @ 但值不是,只是变量,示例

cmd.Parameters.AddWithValue("@Redacted", redacted.ToString());

尝试使用一些值在数据库中执行此查询以检查一切是否正确。如果您有保留字,可以在表名和列名中使用 [brackets]

关于c# - C# 字符串中的 SQL 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25647290/

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