0

我在 mysql 中从 select 中保存变量有一个大问题。

我写了以下代码:

string connectionstring = @"****;userid=*****;
password=***;database=***";
cnn = new MySqlConnection(connectionstring);
cnn.Open();
MySqlDataReader reader = null;
string query_date = "SELECT computer_name from wp_users where user_login = @login";
MySqlCommand command2 = new MySqlCommand(query_date, cnn);
command2.Parameters.AddWithValue("@login", metroTextBox.Text);
reader = command2.ExecuteReader();
while (reader.Read())
{
   string ColumnName = (string)reader["computer_name"];
}
cnn.Close();

我尝试了很多命令,例如 ExecuteReader 、 ExecuteNonQuery 、 ExecuteScalar 。但他们都没有工作,我得到了同样的错误: 在此处输入图像描述

真的不知道这里出了什么问题我搜索了很多并没有找到任何形式的解决方案。请帮忙。

编辑 1

我只是按照你的写法做了,我这样做了:

     string connectionstring = @"****;userid=*****;
        password=***;database=***";
        cnn = new MySqlConnection(connectionstring);
        cnn.Open();
        MySqlDataReader reader = null;
        string query_date = "SELECT computer_name from wp_users where user_login = @login";
        MySqlCommand command2 = new MySqlCommand(query_date, cnn);
        command2.Parameters.AddWithValue("@login", metroTextBox.Text);
        DataTable table = new DataTable("ResultTable");
            MySqlDataAdapter adapter = new MySqlDataAdapter(command2);
            adapter.Fill(table);

            // This is the important line
            string result = table.Rows[0].ToString();

            cnn.Close();

它与之前的错误相同,但在另一个地方。这是怎么回事……只是不知道。附加信息的英文意思是:字典中不存在密钥 在此处输入图像描述

编辑 2

最有趣的是当我尝试用代码更新时:

 string connectionstring = @"****;userid=*****;
    password=***;database=***";
    cnn = new MySqlConnection(connectionstring);
    cnn.Open();
    MySqlDataReader reader = null;
    string upd = "UPDATE w_users Set computer_name = CURRENT_DATE where user_login =  @login";
    MySqlCommand command2 = new MySqlCommand(upd, cnn);
    command2.Parameters.AddWithValue("@login", metroTextBox.Text);
    DataTable table = new DataTable("ResultTable");
    SqlDataAdapter adapter = new MySqlDataAdapter(command2);
    adapter.Fill(table);
    cnn.Close();

这工作正常,没有任何错误,只需更新我的表......它有什么意义

编辑 3

我尝试使用 ExecuteScalar() ,但我仍然有同样的错误: 在此处输入图像描述

4

3 回答 3

1

解决方案很简单:

更新mysql.data.dll到最新版本修复了它(https://dev.mysql.com/downloads/connector/net/6.9.html)。

于 2017-04-13T17:36:32.680 回答
0

如果您有MySqlDataAdapter,请尝试以下代码是否适合您:

string connectionstring = @"****;userid=*****;
password=***;database=***";
cnn = new MySqlConnection(connectionstring);
cnn.Open();

string query_date = "SELECT computer_name AS `computer_name` FROM wp_users WHERE user_login = @login";

MySqlCommand command2 = new MySqlCommand(query_date, cnn);
command2.Parameters.AddWithValue("@login", metroTextBox.Text);

DataTable table = new DataTable("ResultTable");
MySqlDataAdapter adapter = new MySqlDataAdapter(command2);
adapter.Fill(table);

// This is the important line
string result = table["computer_name"];

cnn.Close();
于 2017-04-13T12:42:46.003 回答
0

此异常想告诉您,结果集中没有匹配的键。键是区分大小写的。您是否尝试使用全部大写字母拼写列名:(string)reader["COMPUTER_NAME"]?

即使您选择了小写的列名,数据库也倾向于以大写形式返回列名。

于 2017-04-13T12:36:10.617 回答