【发布时间】:2018-12-31 10:09:08
【问题描述】:
我可以在我的 sql 数据库中插入不寻常的字符(返回 63),这没问题。
Letsay 产品名称 = ኣድድድ
然后如果我想再次插入,但首先检查数据库中是否存在产品名称
var product = db.Products.Where(x => x.Productname == txtproduct.Text.Trim()).FirstOrDefault();
然后返回,因为已经有相同的产品名称 我的意思是
if(product == null)
{
Products pr = new Producst();
pr.ProductName = txtProductname.txt.trim() // tried even without trim()
db.Products.Add(pr);
db.Savechanges();
}
else
{
MessageBox.Show("There is the same productname registred"); // Returns allways this one , doesnt't matter which unusual character
}
即使我写的是另一个不寻常的字符,比如 productname = ሰግግግ 然后它返回“注册了相同的产品名称”。 实际上,当我输入它们时,它们不是同一个词,但是当我检查它们的 ascii 代码时,它们返回 63。
我不想在数据库中出现重复的产品名称。有没有办法解决这个问题?请帮忙!
【问题讨论】:
-
不确定。但这有帮助吗? stackoverflow.com/questions/15982499/…
-
@Helen 您好,您可以访问数据库吗?如果您有权在数据库定义上添加约束,那么最好使用代码。喜欢:ALTER TABLE TABLE ADD CONSTRAINT Unique_NameCol UNIQUE (NameCol);
-
这两个字符是unicode字符(两个字节)4771(0x12A3)和4853(0x12F5)使用了3次。尝试使用 RichTextBox。
-
您是否尝试调试过
txtproduct.Text和txtproduct.Text.Trim()的值?此外,如果您不需要对product执行特定操作,您可能更喜欢使用Any编写一些内容,例如if(db.Products.Any(x => x.Productname == txtproduct.Text)) -
@pascalsanchez,感谢您的回复。是的,我可以访问数据库并添加了 ConstriantUnique_NameCol,但遇到了同样的问题
标签: c# sql-server linq ascii