我有这段代码,我想让varchar不是字符串。在c#
中执行此操作的适当语法是什么 string emri = row["Nome"].ToString();
我有一个必须运行的查询,我在其中使用emri并将其与我在mysql中创建的表中的列进行比较。 mysql中的列是varchar(20)类型。当我执行我的代码时,它在我的查询中出错,我猜测可能是因为这个原因
I have this query
string query = "IF NOT EXISTS(SELECT * FROM clienti WHERE CodCliente= " + id + " AND Nome = '" + emri + "' AND RagioneSociale=' " + ragSoc + " ' AND PartitaIVA=' " + piva + " ') INSERT INTO clienti VALUES(" + id + " ,' " + emri + " ',' " + ragSoc + " ',' " + piva + " ') else UPDATE clienti SET( " + id + " ,' " + emri + " ',' " + ragSoc + " ',' " + piva + " ')";
它给了我这个问题
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS(SELECT * FROM clienti WHERE CodCliente= 1 AND NomeCliente = 'Jo' at line 1
答案 0 :(得分:17)
C#中没有varchar
类型。
varchar
几乎是一个字符串(显然是SQL中的可变长度),所以你拥有的很好。
答案 1 :(得分:2)
在.NET中没有名为“varchar”的类型,最接近的是string
。
我假设你有一个问题,我猜你在问题中发布的代码有问题,所以让我试着猜猜那是什么,然后告诉我你怎么解决它。
首先,由于varchar
不存在,您发布的代码看起来很好,在表面上。
然而,有一个问题,你没有显示row
是什么,但如果它是常见的罪魁祸首之一,你将会遇到来自null
标记的问题数据库中。
相应列中数据库中的null
标记不会以null
的形式返回到.NET代码,而是会返回DBNull.Value
值。< / p>
以下是我要写的内容:
string emri;
if (row["Nome"] == DBNull.Value)
emri = null; // or String.Empty if you don't like null values
else
emri = Convert.ToString(row["Nome"]);
答案 2 :(得分:2)
这不是不真实的,当您通过更改位于VS中的调试设置来逐步执行某个过程时,如果您运行这样的示例,其中表中已设置了varchar值,则您也可以逐步执行SQL脚本过程。
Try
{
using (SqlCommand cmd = new SqlCommand(examplestring, connection))
{
cmd.ExecutenonQuery();
}
}
catch
{
return;
}
现在在catch语句中放置一个断点,在examplestring中有一个名为&#39; 456789 - 1&#39;的字符串。等于SQL表中的Itemnumber varchar(25)。
catch会收到以下错误SqlException被捕获 - 将数据类型varchar转换为numeric时出错。
现在查询字符串被设置为字符串原因,这是SqlCommand在MSDN上查找它的唯一方法:System.Data.SqlClient.SqlCommand
所以是的,Lasse在.NET中有varchar。