Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/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#MySQL声称字段太长_C#_Sql_Mysql - Fatal编程技术网

C#MySQL声称字段太长

C#MySQL声称字段太长,c#,sql,mysql,C#,Sql,Mysql,下面是SQL: CREATE TABLE patients ( patient_id INT AUTO_INCREMENT NOT NULL, last_name VARCHAR(64) NOT NULL, first_name VARCHAR(64), sex CHAR(1), birth DATE, death DATE, PRIMARY KEY (patient_id) ) ENGINE=INNODB; 这是C#: 这是我

下面是SQL:

CREATE TABLE patients 
(
  patient_id INT AUTO_INCREMENT NOT NULL,
  last_name  VARCHAR(64) NOT NULL,
  first_name VARCHAR(64),
  sex        CHAR(1),
  birth      DATE,
  death      DATE,
  PRIMARY KEY (patient_id)
) ENGINE=INNODB;
这是C#:

这是我直接在SQL中输入数据的方式:

INSERT INTO patients(last_name, first_name, sex, birth, death) 
VALUES
  ('DeLarge', 'Alexandra', 'F', '1975-12-02', NULL)
上面的工作和我写的C#代码的基础上。但C#代码产生了以下结果:
MySql.Data.MySqlClient.MySqlException:对于第1行的“sex”列,数据太长

给出了什么?

参数名称周围不应该有单引号。请像这样尝试:

MySqlCommand insertCom = new MySqlCommand("INSERT INTO patients(" +
            "last_name, first_name, sex, birth) VALUES" + 
            "(@lastName, @firstName, @sex, @birthDate)",
            connection);

啊哈,发现你的问题了。我认为你的MySQL应该是:

MySqlCommand("INSERT INTO patients(" +
                "last_name, first_name, sex, birth) VALUES" + 
                "(@lastName, @firstName, @sex, @birthDate)"
因为您试图插入的是
('DeLarge','Alexandra','F','1975-12-02',NULL)
但是,您的命令指示插入:
(“@lastName”、“firstName”、“sex”、“birthDate”)
MySQL发现,
“@sex”
的值太大,无法容纳一个字符


从命令中取出
,让C#自己处理所有数据类型和格式

我的第一个想法是,该表需要latin1或utf-8数据,并以utf-16格式获取数据。在utf-16中,字符(1)至少为2个字节。在拉丁语1中,字符(1)是1字节。在utf-8中,字符(1)最小为1字节。但是,我还没有使用.NET中的MySQL,所以我不能确定。
MySqlCommand("INSERT INTO patients(" +
                "last_name, first_name, sex, birth) VALUES" + 
                "(@lastName, @firstName, @sex, @birthDate)"