【问题标题】:C# MySql DataTable fill in ArrayC# MySql DataTable 填充数组
【发布时间】:2015-07-10 21:24:21
【问题描述】:

我遇到了问题。

我想编写一个程序来将一些东西插入 Mysql 数据库。 我第一次为数据库中的每一列创建一个自己的字符串,并用它来创建 SQL 查询。但在大多数表中,我得到了 100 多列。而且我不想制作 100 个变量。所以我决定用数据表和数组来做。但现在我不知道如何将列名填充到数组中。这是执行此操作的代码部分。

        private void button_npccreate_click(object sender, EventArgs e)
    {
        //Umwandlung von C# Variable in Mysql Variable
        MySqlCommand command = new MySqlCommand();
        command.Parameters.AddWithValue("@server", server);
        command.Parameters.AddWithValue("@port", port);
        command.Parameters.AddWithValue("@user", user);
        command.Parameters.AddWithValue("@password", mysqlpassword);
        command.Parameters.AddWithValue("@world", db_world);


        //Connection zu Mysql Server
        string myConnectionString = "Server=" + server + ";Port=" + port + ";Database=" + db_world + ";Uid=" + user + ";Pwd=" + mysqlpassword + ";";
        MySqlConnection connection = new MySqlConnection(myConnectionString);
        MySqlCommand cmd;
        cmd = connection.CreateCommand();
        string readquery = "SELECT * FROM quest_template;";
        MySqlDataAdapter read_adapter = new MySqlDataAdapter(readquery, connection);
        DataTable tableRead = new DataTable();
        connection.Open();
        read_adapter.Fill(tableRead);
        connection.Close();
        int columns = 0;


        if(tableRead.Rows.Count > 0)
        {
        foreach(DataColumn dc in tableRead.Columns)
        {
            columns++;
        }
        }
        else
        {
            MessageBox.Show("The table is empty. Please check your Database.");
        }

        string [] columns_array = new string[columns];
        foreach (DataColumn dc in tableRead.Columns)
        {
// Here i must fill the Array i think. But i dont know how to do                      this.
        }

    }

【问题讨论】:

  • 如果您使用 Fill 方法填充 DataTable,则使用该 DataTable 而不是使用数组。数据表更强大。如果您仍想使用数组,则需要创建一个数组,该数组的大小与行的结果集大小以及数据表中的维数一样多。同样在您的代码中,您需要一个嵌套的 for 循环。一个用于行,一个用于列。

标签: c# mysql mysqldatareader


【解决方案1】:

您应该考虑 Emmad Kareem 的言论。

您的目标的问题是列可能包含不同类型的值。因此,您无法收集二维数组中的所有单元格(一维用于列,一维用于行)。 例如,在下面的代码中,如果要将 col0Array 和 col1array 合并为一个 2 dim 数组,则需要将此数组声明为“object[,]”,这与 DataTable 相比 没有优势

int   [] Col0Array = new int   [tableRead.Rows.Count] ; // first Column type is int
string[] Col1Array = new string[tableRead.Rows.Count] ; // second Column type is string
for (int i=0;tableRead.Rows.Count;i++)
{
   Col0Array[i]=(int   )tableRead.Rows[i][0] ;
   Col1Array[i]=(string)tableRead.Rows[i][1] ;
}

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 2020-03-05
    • 2014-08-22
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2013-03-05
    • 2018-02-15
    相关资源
    最近更新 更多