У меня есть программа управления запасами, над которой я работаю.Способ настройки системы баз данных и таблиц состоит в том, что каждая категория представляет собой отдельную таблицу.Это необходимо, поскольку каждая категория (т. Е. Обувь, телефоны, ноутбуки) имеет разные поля для уникальной идентификации каждого продукта.Итак, я создаю таблицу, а затем добавляю столбцы с именем пользователя через оператор foreach.У меня проблема в том, что он хочет добавить столбец ID, когда он уже существует.Я попытался добавить оператор If, вложенный в foreach, но он просто нарушает цикл foreach.Я просто не нашел способ пропустить столбец идентификатора и продолжить добавление каждого из столбцов.
Вот код функции:
private void btnCreateCategory_Click(object sender, EventArgs e)
{
List<string> FieldNames = new List<string>();
foreach (var item in lstFieldNames.Items)
{
FieldNames.Add(lstFieldNames.Items.ToString());
}
DataTable NewCategory = new DataTable();
NewCategory = CreateTable(FieldNames);
dgPreviewAdd.DataSource = NewCategory;
using (SqlConnection Connection = new SqlConnection(
Helper.cnnVal("InventoryManager")))
{
using (SqlCommand command = new SqlCommand("", Connection))
{
command.CommandText = "Create Table tbl" +
NewCategory.TableName.ToString() + "(ID int)";
Connection.Open();
command.ExecuteNonQuery();
Connection.Close();
foreach (DataColumn newColumn in NewCategory.Columns)
{
If( newColumn.ColumnName("ID")
{
}
Else
{
SqlParameter colparam = new SqlParameter();
colparam.ParameterName = "@ColumnName";
colparam.Value = newColumn.ColumnName.ToString();
SqlParameter tblParam = new SqlParameter();
tblParam.ParameterName = "@TableName";
tblParam.Value = "tbl" + NewCategory.TableName.ToString();
command.Parameters.Add(colparam);
command.Parameters.Add(tblParam);
command.CommandText = "dbo.AddCategoryColumns";
command.CommandType = CommandType.StoredProcedure;
Connection.Open();
command.ExecuteNonQuery();
Connection.Close();
}
}
LoadCategory catTableLoad = new LoadCategory();
DataTable catTable = new DataTable();
catTable = catTableLoad.getCategoryTable();
SqlParameter param = new SqlParameter();
param.ParameterName = "@CategoryName";
param.Value = NewCategory.TableName.ToString();
SqlParameter param2 = new SqlParameter();
param2.ParameterName = "@IdNumber";
param2.Value = catTable.Rows.Count + 1;
command.Parameters.Add(param);
command.Parameters.Add(param2);
command.CommandText = "dbo.AddCategory";
command.CommandType = CommandType.StoredProcedure;
Connection.Open();
command.ExecuteNonQuery();
Connection.Close();
}
}
}