首页 > 解决方案 > 如何使用 Visual Studio 在 C# 中的数据库中存储和加载复选框状态

问题描述

我正在 Visual Studio 中开发 Windows 窗体应用程序。我有一个带有复选框的表单。我想将选中的状态保存在数据库中。稍后我想从该数据库加载复选框的状态。

我正在使用此查询字符串将复选框状态保存到数据库中:

string insertQuery = "INSERT INTO database.database( checkbox_Voorschrift) VALUES('" + checkBox_VS.CheckState + "')";

在我的数据库中,我使用的是布尔值。

要加载复选框的状态,我使用这个:

checkBox_VS.Text = dataGridView1.CurrentRow.Cells[8].Value.ToString();

但是我还没有找到一个可行的解决方案,例如将选中的复选框保存到数据库中,然后,在加载该复选框时,当使用数据库中的数据加载表单时,该复选框会被选中。

我究竟做错了什么?错误的数据库字段类型?查询字符串中的一些错误,......

感谢分享!!!

标签: c#databasevisual-studiocheckbox

解决方案


您的问题有一个解决方案。CheckBox 的 CheckState 是一种枚举类型,System.Windows.Forms.CheckState因此,将枚举保存到数据库的最流行方法是将列声明为SMALLINT类型。您应该在数据库中将 Boolean 更改为 SMALLINT。因此,当您从数据库中获取值时,您必须像这样设置 CheckState

short demoDatabaseValue = 1;
this.checkBox1.CheckState = (CheckState)demoDatabaseValue;

并且您的插入查询应修改为

string insertQuery = "INSERT INTO database.database( checkbox_Voorschrift) VALUES('" + (short)checkBox_VS.CheckState + "')";

但是,您显示了一个代码checkBox_VS.Text = dataGridView1.CurrentRow.Cells[8].Value.ToString();。此代码将不起作用,因为您不能像这样设置 CheckState。最后,如果您的检查状态作为字符串位于 dataGridView1 中,那么您可以从该字符串加载状态,例如

Enum.TryParse("Checked", out CheckState myStatus); //tryparse will work for only 3 data Unchecked,Checked and Indeterminate
this.checkBox1.CheckState = myStatus;

注意: TryParse 不适用于其他文本。而且我没有正确检查您的 sql 查询。请检查 c# 代码并尝试一下,让我知道它是否有效。


推荐阅读