Проблема здесь в основном из-за времени. В настоящее время вы объединяете values
в строку прямо в начале , когда это пустая строка. Как только вы это сделаете: вот оно - это созданный вами SQL:
insert into Foo values()
что не поможет. Я бы либо отложил это объединение до после цикла:
foreach (var item in ControlName.Controls)
{
if (item is TextBox)
{
cmd.Parameters.AddWithValue("@" + ((TextBox)item).ID, ((TextBox)item).Text);
values += "@" + ((TextBox)item).ID + ",";
}
}
cmd.CommandText = "insert into "+ TableName +" values(" + values + ")";
или я бы использовал StringBuilder
на всем протяжении:
var sql = new StringBuilder("insert into [").Append(TableName)
.Append("] values(");
foreach (var item in ControlName.Controls)
{
if (item is TextBox)
{
cmd.Parameters.AddWithValue("@" + ((TextBox)item).ID, ((TextBox)item).Text);
sql.Append("@").Append(((TextBox)item).ID).Append(",");
}
}
cmd.CommandText = sql.Append(")").ToString();
Примечание также: это CommandType.CommandText
, а не CommandType.StoredProcedure
.