Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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/8/mysql/61.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#_Mysql_Row - Fatal编程技术网

C# 如何从mysql中读取一行?

C# 如何从mysql中读取一行?,c#,mysql,row,C#,Mysql,Row,我有mysql中的用户配置文件,我想读取一行(某个用户)并向对象“user”添加值 下面是我的部分代码:(返回用户的函数) 有了这个我只得到名字,姓氏是空的(见debbuger)你的代码没有意义。您已经知道姓氏和名称,因为您将它们作为WHERE条件的参数传递。其中一部分,姓氏为null的问题是您没有执行第二个命令 你应该加上 //2. Read surname string sql = "select surname from profili where name=@name and surna

我有mysql中的用户配置文件,我想读取一行(某个用户)并向对象“user”添加值

下面是我的部分代码:(返回用户的函数)


有了这个我只得到名字,姓氏是空的(见debbuger)

你的代码没有意义。您已经知道姓氏和名称,因为您将它们作为WHERE条件的参数传递。其中一部分,姓氏为null的问题是您没有执行第二个命令

你应该加上

//2. Read surname
string sql = "select surname from profili where name=@name and surname=@surname";
cmd = new MySqlCommand(sql, konekcija);
cmd.Parameters.Add("@name", MySqlType.VarChar).Value = name;
cmd.Parameters.Add("@surname", MySqlType.VarChar).Value = surname;
reader = cmd.ExecuteReader();
person_1.surname = reader["surname"].ToString();
也就是说,执行两次命令来检索一行是没有意义的。查询文本可以轻松地添加所有要检索的列名,并只执行一次读取

//1. Read the row matching the known surname and name 
string sql = @"select name, surname, column1, column2, colx 
              from profili where name=@name and surname=@surname";

cmd = new MySqlCommand(sql, konekcija);
cmd.Parameters.Add("@name", MySqlType.VarChar).Value = name;
cmd.Parameters.Add("@surname", MySqlType.VarChar).Value = surname;
MySqlDataReader reader = cmd.ExecuteReader();
if (reader.Read()) {
   person_1.name = reader["name"].ToString();
   person_1.surname = reader["surname"].ToString();
   person_1.Property1 = reader["column1"].ToString();
   ...and so on for other columns

不推荐使用Add,请使用AddWithValue。不推荐使用AddWithValue。看见然而,这种形式的Add确实不受欢迎。OP应该使用Add的重载,该重载使用三个参数:名称、类型和值,或者仅仅合并在一行中,因为我已经更改了上面的答案
//1. Read the row matching the known surname and name 
string sql = @"select name, surname, column1, column2, colx 
              from profili where name=@name and surname=@surname";

cmd = new MySqlCommand(sql, konekcija);
cmd.Parameters.Add("@name", MySqlType.VarChar).Value = name;
cmd.Parameters.Add("@surname", MySqlType.VarChar).Value = surname;
MySqlDataReader reader = cmd.ExecuteReader();
if (reader.Read()) {
   person_1.name = reader["name"].ToString();
   person_1.surname = reader["surname"].ToString();
   person_1.Property1 = reader["column1"].ToString();
   ...and so on for other columns