【问题标题】:How to assign datareader value string array如何分配datareader值字符串数组
【发布时间】:2021-05-21 01:30:09
【问题描述】:

我正在从数据库MySql version 8.0.17获取这些记录

+-------------------------+
| TABLE_NAME              |
+-------------------------+
| t_contents_s300_1_2021  |
| t_contents_s34d_1_2021  |
| t_contents_s34g_1_2021  |
| t_contents_s3sv_1_2021  |
+-------------------------+

我使用MySqlDataReader 读取这些记录如下

MySqlDataReader reader = cmd.ExecuteReader();    
// in reader, I have records which comes from database.

while(reader.Read())    
{
   string [] arpp_pro = new string[] {reader["TABLE_NAME"].ToString()};
}

一切正常...

但是我需要在数组中分配string [] arpp_pro 的这些值,以便在新表上为TABLE_NAME 中的每个值执行单个查询 INSERT INTO

如何解决这个问题。

如何从TABLE_NAME获取数组中的所有记录?

提前感谢您的帮助

【问题讨论】:

  • 我已经删除了对 ASP.NET 的引用,因为这个问题中没有任何内容是制作 Web 应用程序所独有的。

标签: c# mysql arrays


【解决方案1】:

我想你想构建一个列表:

MySqlDataReader reader = cmd.ExecuteReader();    

List<string> arpp_pro = new List<string>(); // define a list outside of the loop
while(reader.Read())    
{
   // for each row from the database, add the retrieved table name to the list
   arpp_pro.Add(reader["TABLE_NAME"].ToString()); 
}

// code to dos something with arpp_pro here.

我还建议在您的阅读器中使用 using 关键字,以确保在您使用完后将其关闭/丢弃。示例:

List<string> arpp_pro = new List<string>(); // define a list outside of the loop
using(MySqlDataReader reader = cmd.ExecuteReader())
{
    while(reader.Read())    
    {
       // for each row from the database, add the retrieved table name to the list
       arpp_pro.Add(reader["TABLE_NAME"].ToString());
    }
}

如果你真的需要它作为数组,你可以调用string[] arpp_pro_array = arpp_pro.ToArray();将列表转换为数组。您需要在代码文件的顶部使用 using System.Linq; 才能使其工作,因为 ToArray 是一种 LINQ 扩展方法。

【讨论】:

  • 感谢您的帮助,非常感谢。请参阅问题中的 update。我不明白如何从列表中获取单个值(表名)
  • @Edward 如果只需要一个值,为什么还要读取多个值?只有你知道你想要哪个表名的逻辑,以及是什么告诉你就是那个。
  • @John:一个小提示——因为reader会返回字符串值,所以转换会比调用ToString更快,也就是说,(string)reader["TABLE_NAME"]而不是reader["TABLE_NAME"].ToString()
  • @John 请参阅问题中的 logic。对于列表 arpp_pro 中的每个值,我需要在表上插入值 t_contents_table_name_insert
  • @Edward 你特别问“如何从TABLE_NAME 中获取数组中的所有记录?”,我已经回答了。您的新编辑是另一回事,应该是它自己的问题。
猜你喜欢
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2021-10-13
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
相关资源
最近更新 更多