2017-04-13 66 views
0

我有一个很大的问题,从选择保存变量在MySQL中。C#写从mysql选择变量

我写了下面的代码:

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命令。但他们都没有工作,我得到了同样的错误: enter image description here

真的不知道什么是错在这里我搜索了很多,没有找到任何形式的解决方案。请帮忙。

编辑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(); 

其相同的错误,但早另一个地方。这里发生了什么......只是不知道。 更多信息意味着英语:关键是不存在的字典 enter image description here

EDIT 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(); 

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

EDI牛逼3

我jutr尝试使用的ExecuteScalar(),仍然我有同样的错误: enter image description here

+0

你使用的是Oracles MySQL Connector吗? –

+0

不,我只是在winforms中创建一个应用程序,并尝试连接到mysql数据库 – Michael

+0

也许该异常的细节可以帮助你。请在这里发布堆栈跟踪和内部异常详情 –

回答

0

这一例外要告诉你,有你的结果集没有匹配的密钥。密钥区分大小写。您是否尝试拼写列名全部为大写字母:(字符串)阅读器[“COMPUTER_NAME”]?

数据库往往以大写返回列名,即使你在较低的情况下,选择列名。

+0

错误发生在试图键入读者当前位置之前。 – Crowcoder

+0

哎呀,没有注意到您的屏幕截图中的异常位置。我试过你的代码,我无法重现你描述的错误。也许你的MySQL驱动安装有问题。 – ichselber

+0

command2.Parameters.AddWithValue(“@ login”,metroTextBox.Text); “@”可能会导致此问题。你试过 command2.Parameters.AddWithValue – ichselber

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(); 
+0

看起来主要的话题,我刚刚编辑,当我尝试做你喜欢你写字符串结果=表[“computer_name”];我不能这样做,我有一个错误[] – Michael

+0

@迈克尔我只是看着你的编辑,这很奇怪,它仍然无法正常工作。你可以运行下面的查询'SHOW CREATE TABLE wp_users;'并显示结果吗?我然后将能够进一步帮助你 –

+0

它的工作现在看起来我只是aded answear – Michael