Search code examples
c#sqlc#-4.0sqlparameter

How to use Column Names from list into MySql insert


I have 2 lists:

List<string> ColumnNames = new List<string>();
List<string> ValueNames = new List<string>();
ColumnNames = names.Keys.ToList();
ValueNames = names.Values.ToList();

I'm trying to use this lists into MySql statement:

...
MySqlCommand command = conDataBase.CreateCommand();
command.CommandText = string.Format("insert into MyTable {0} values (?parameter)", string.Join(",", ColumnNames));
command.Parameters.AddWithValue("parameter", string.Join(",", ValueNames));
...

Here I take error in syntax

...
command.CommandText = "insert into MyTable (" + string.Join(",", ColumnNames) + ") values ('" + string.Join(",", ValueNames) + "')";
...

and

...
command.CommandText = "insert into MyTable (" + string.Join(",", ColumnNames) + ") values (?parameter)";
command.Parameters.AddWithValue("parameter", string.Join(",", ValueNames));
...

In last 2 Codes I'm taking error "Column count doesn't match value count at row 1, but

ColumnNames.Count = ValueNames.Count

Solution

  • I found solution: https://www.codeproject.com/Questions/1225444/How-to-use-column-names-from-list-into-mysql-inser

    List<string> ColumnNames = names.Keys.ToList()
    List<string> ValueNames = names.Values.ToList();
    List<string> RevValueNames = new List<string>();
    ValueNames.ForEach(x => RevValueNames.Add("'" + x + "'"));
    string Query = string.Format("insert into MyTable ({0}) values ({1})", string.Join(",", ColumnNames), string.Join(",", RevValueNames));
                    command.CommandText = Query;