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

时间:2013-04-19 20:27:34

标签: c#

我有这段代码,我想让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

3 个答案:

答案 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。