Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#中使用varchar数据类型?_C# - Fatal编程技术网

如何在c#中使用varchar数据类型?

如何在c#中使用varchar数据类型?,c#,C#,我有这段代码,我想让它变为varchar而不是string。在c语言中,什么是合适的语法# 我有一个必须运行的查询,我在其中使用emri,并将其与我在mysql中创建的表中的一列进行比较。mysql中的列的类型为varchar(20)。当我执行我的代码时,它在我的查询中给出了一个错误,我猜可能是因为这个原因 I have this query string query = "IF NOT EXISTS(SELECT * FROM clienti WHERE CodCliente= " +

我有这段代码,我想让它变为varchar而不是string。在c语言中,什么是合适的语法#

我有一个必须运行的查询,我在其中使用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

C#中没有
varchar
类型


varchar
基本上是一个字符串(显然在SQL中是可变长度的),因此您可以使用它。

在.NET中没有名为“varchar”的类型,最接近的是
string

我假设你问这个问题是有原因的,我猜你在问题中发布的代码有一些问题,所以让我试着猜一下这是什么,并告诉你如何解决它

首先,由于
varchar
不存在,因此您发布的代码表面上看起来很好

但是,有一个问题,您没有显示什么是
,但是如果它是常见的罪魁祸首之一,您将遇到数据库中
null
标记的问题

数据库中相应列中的
null
标记不会作为
null
返回到.NET代码中,而是返回一个值

以下是我将要写的内容:

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"]);

不,这是不正确的,当您通过更改VS中的调试设置来逐步完成一个过程时,如果您运行这样一个示例,其中表中设置了varchar值,也可以逐步完成SQL脚本过程

Try
{
  using (SqlCommand cmd = new SqlCommand(examplestring, connection))
  {
    cmd.ExecutenonQuery();
  }
 }
 catch
 {
    return;
  }
现在在catch语句上放置一个断点,在示例字符串中,有一个名为“456789-1”的字符串,该字符串等于SQL表中的Itemnumber varchar(25)

捕获将获得以下错误SqlException已捕获-将数据类型varchar转换为数字时出错

现在,查询字符串被设置为字符串,因为这是SqlCommand工作的唯一方式在MSDN:System.Data.SqlClient.SqlCommand上查找它


是的,女士.NET中有varchar。

你是什么意思?在.NET中没有名为“varchar”或类似的类型,等效的类型是
string
。您可以使用上面的类型。当获取要使用的varchar、nvarchar等值时,.NET中的字符串变量类型是完美的。如果你对你想做的事情给出更详细的评论,也许我们可以给你一个更好的答案。@sammy_winter我编辑了我问题的内容。
Try
{
  using (SqlCommand cmd = new SqlCommand(examplestring, connection))
  {
    cmd.ExecutenonQuery();
  }
 }
 catch
 {
    return;
  }