C# MySql DataTable заполнить массив
У меня проблема.
Я хочу написать программу для вставки некоторых вещей в базу данных 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.
}
}
1 ответ
Вы должны принять во внимание замечания Эммада Карима.
Проблема с вашей целью в том, что столбцы могут содержать значения разных типов. Поэтому вы не можете собрать все ячейки в двумерном массиве (одно измерение для столбцов, одно для строки). Например, в приведенном ниже коде, если вы хотите объединить 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] ;
}