首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取整个表- MySQL错误

问获取整个表- MySQL错误
EN

Stack Overflow用户
提问于 2014-09-03 06:10:17
回答 2查看 207关注 0票数 0

在这里使用C#和MySQL (Visual 12和MySQL工作台6.1)。

我想把整张桌子都列成一张单子。

到目前为止,这就是我所拥有的:

代码语言:javascript
复制
List<Object> arrList = new List<Object>();

string str = @"server=localhost;database=test;userid=root;password=asd;";


MySqlConnection con = new MySqlConnection(str);
con.Open(); 


MySqlCommand cmd = new MySqlCommand(query, con);

cmd.CommandText = query;
MySqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
     arrList.Add(reader["* "]);
}

当我将SELECT * FROM emp;传递给query并试图获得一个toString of arrList时,我会得到一个indexOutOfBounds异常。(我的表emp中有1条记录。)

谢谢!

编辑:,我试图将整个表(按顺序排列)放到列表中。这样做对吗?

编辑2:,如果我们不知道表中的列数怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-03 06:12:34

改为:

代码语言:javascript
复制
while (reader.Read())
{
     arrList.Add(reader["myColumnTitle"].ToString());
}

因为"* "不是valis列名。替代您可以使用索引

代码语言:javascript
复制
arrList.Add(reader[0].ToString());

每一栏:

List arrList =arrList();

代码语言:javascript
复制
string str = @"server=localhost;database=test;userid=root;password=asd;";
string query = "SELECT * FROM emp";

MySqlConnection con = new MySqlConnection(str);
con.Open(); 


MySqlCommand cmd = new MySqlCommand(query, con);

cmd.CommandText = query;
MySqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
    for (int i = 0; i < reader.FieldCount; i++)
    {
        var value = reader[i];
        arrList.Add(Convert.ToString(value))
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-09-03 06:20:53

reader.Read()逐行读取结果。这意味着在这个while语句中,您需要读取查询的所有列。

当您编写"* "时,您的读者会查找一个名为*的专栏,您没有这个专栏。MySqlDataReader无法理解在编写*时读取所有列,就像在sql查询中一样。

这应该能行。

代码语言:javascript
复制
while (reader.Read())
{
     arrList.Add((string)reader[0]);
     arrList.Add((string)reader[1]);
}

如果您真的不知道MySqlDataReader有多少字段,可以使用 property。

获取当前行中的列数。

所以你的代码可以像;

代码语言:javascript
复制
while (reader.Read())
{
     for(int i = 0; i < reader.FieldCount; i++)
     {
        arrList.Add((string)reader[i]);
     }
}

还可以使用 statement来释放数据库连接和类似的对象;

代码语言:javascript
复制
using(MySqlConnection con = new MySqlConnection(str))
using(MySqlCommand cmd = con.CreateCommand())
{
   ...
   ...
   using(MySqlDataReader reader = cmd.ExecuteReader())
   {
      while (reader.Read())
      {
         for(int i = 0; i < reader.FieldCount; i++)
         {
            arrList.Add((string)reader[i]);
         }
      } 
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25637380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档