gpt4 book ai didi

c# - 使用 C# 的 SQL 中的空格

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

我有一个用 C# 编写的连接到 SQL 数据库的 Windows 应用程序。

我的应用程序中有文本字段并像这样更新数据库:

string name = textBox60.Text;

string sql = "insert into myTable(Name) values ('" + name + "')";
DbHelper.ExecuteNonquery(sql);

public static int ExecuteNonquery(string sql)
{
using (SqlConnection cn = new SqlConnection(constr))
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
else if (cn.State == ConnectionState.Open)
{
cn.Close();
cn.Open();
}
else if (cn.State == ConnectionState.Broken)
{
cn.Close();
cn.Open();
}
using (SqlCommand cm = new SqlCommand(sql, cn))
{
return cm.ExecuteNonQuery();
}
}
}

但是对于数据库中每一个类型为nchar的数据,它们都充满了空格。例如,如果我在文本字段中填写 abc,当我检查数据库时,它将变成 "abc_________________"(空格),如下所示。

除了仅在我读取它们时修剪字符串或使用 UPDATE data SET TRIM(data) 如果我有大量此类数据,如何防止这种情况。

感谢您的帮助。

最佳答案

But for every data with type nchar in the database, they are full of whitespaces.

是的,那是因为 nchar 类型是固定宽度的类型。您基本上是在告诉数据库您希望该字段的每个值的长度都为 20(或设置的任何值)。您应该改用 nvarchar,它是一个可变宽度字段。

您还应该避免编写这样的代码:

string sql = "insert into myTable(Name) values ('" + name + "')";

相反,您应该使用参数化 SQL,在 SQL 本身中放置一个占位符参数,然后在命令中设置该参数的值。这将避免 SQL injection attacks ,数据转换问题,并使您的代码(SQL)与数据(参数)完全分开。不过,这意味着您需要更改辅助方法。 (您的辅助方法一开始看起来很奇怪 - 当然,当您刚刚创建连接时,您只需要打开它......当您没有在每个打电话?)

关于c# - 使用 C# 的 SQL 中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15609393/

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