实现Combobox(下拉)作为新DB记录的一部分

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (6)

我有一个本地数据库,已经有记录。我目前正在开发一个图书馆项目,并且在DB中同时拥有书籍和类别表(类别也是书籍表中的FK)。

在Windows窗体应用程序中,我正在尝试实现一个表单以在书籍表中插入新书记录,在选择类别时使用组合框。

到目前为止,我已经尝试了下面的代码 - 按下保存按钮确实在DB中生成了表单中给出的详细信息,但Category值始终为NULL(组合框不工作)。

请帮助我找到以下实施中缺少的内容,好吗?以下代码是我为一个类别ID制作的测试 - 已经实现了Getters&Setters。

编辑以下更多详细信息 - 请注意,我知道并且仍然需要使用参数化查询,我将在对这个组合框问题进行排序后对其进行调查。

 private void AddBookRecordForm_Load(object sender, EventArgs e)
    {
        var dataSource = new List<Category>();

        dataSource.Add(new Category() { CategoryID = '4', CategoryName = "History" });

        cbCategory.ValueMember = "CategoryID";
        cbCategory.DisplayMember = "CategoryName";
        cbCategory.DataSource = dataSource;
    }

编辑:

 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, BookAvailabilityQuantity, Price) values ('" + this.txtName.Text.Trim() 
    + "','" + this.txtAuthor.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.txtAvailabilityQuantity.ResetText();
    this.txtPrice.ResetText();
}
提问于
用户回答回答于

组合框是单​​向绑定。数据库信息仅用于填充它。您需要手动获取所选值并更新更新记录中的相应字段。看这篇文章。

String Query = "insert into Books (CategoryName, BookName, BookAuthor, BookAvailabilityQuantity, Price) values ('" cbCategory.Text
    + "','" + this.txtName.Text.Trim() 
    + "','" + this.txtAuthor.Text.Trim() 
    + "','" + this.txtAvailabilityQuantity.Text.Trim() 
    + "','" + this.txtPrice.Text.Trim() + "');";

扫码关注云+社区

领取腾讯云代金券