Я пытаюсь реализовать Enum в кнопке «Сохранить» (которая вставляет новые записи в БД, подключенную к приложению Visual Studio WinForms).
В этом случае у меня есть книги и таблицы категорий. Категория также является внешним ключом в таблице книг (как CategoryID, который должен принимать только тип данных int).
Учитывая вышесказанное, я бы хотел, чтобы приложение понимало / преобразовывало строковое значение в значение типа int, например:
Если я введу значение «История» в текстовом поле «Категория» в приложении и заполню остальные детали, необходимые для вставки новой записи книги в БД, и, наконец, нажму кнопку «Сохранить», мне нужно, чтобы приложение понимало, что «История» будет отражать идентификатор (в данном случае, идентификатор: «4») в таблице категорий.
Короче говоря, я не хочу вводить значения int в приложении - я хочу ввести Имя категории в текстовом поле CategoryID.
private void btnSave_Click(object sender, EventArgs e)
{
string ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=
C:\Program Files\Microsoft SQL
Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\Library System Project.mdf
;Integrated Security=True;Connect Timeout=30";
string Query = "insert into Books (BookName, BookAuthor, CategoryID, ClassificationID, BookAvailabilityQuantity, Price) values ('" + this.txtName.Text.Trim() + "','" + this.txtAuthor.Text.Trim() + "','" + this.txtCategory.Text.Trim() + "','" + this.txtClassification.Text.Trim() + "','" + this.txtAvailabilityQuantity.Text.Trim() + "','" + this.txtPrice.Text.Trim() + "');";
SqlConnection DBCon = new SqlConnection(ConnectionString);
SqlCommand DBCommand = new SqlCommand(Query, DBCon);
SqlDataReader DBReader;
try
{
DBCon.Open();
DBReader = DBCommand.ExecuteReader();
MessageBox.Show("New book record added to the system.", "Library System", MessageBoxButtons.OK);
while (DBReader.Read())
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
// *** If you're going to be opening a connection be sure to close it ***
// *** Finally blocks work well for this ***
DBCon.Close();
this.txtName.ResetText();
this.txtAuthor.ResetText();
this.txtCategory.ResetText();
this.txtClassification.ResetText();
this.txtAvailabilityQuantity.ResetText();
this.txtPrice.ResetText();
}
}