c# - 如何使用 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();
- 我已经尝试过使用 textbox.Text、textbox.Checked、checkbox.CheckStatus
- 我已将数据库字段类型更改为 Bit、Varchar
- 我已将查询字符串更改为 .Value
但是我还没有找到一个可行的解决方案,例如将选中的复选框保存到数据库中,然后,在加载该复选框时,当使用数据库中的数据加载表单时,该复选框会被选中。
我究竟做错了什么?错误的数据库字段类型?查询字符串中的一些错误,......
感谢分享!!!
解决方案
您的问题有一个解决方案。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# 代码并尝试一下,让我知道它是否有效。
推荐阅读
- python - 使用 Python (xlwings) 将 excel doc 中的特定工作表打印为 PDF
- python - 使用梯形方法集成 SciPy 问题('numpy.ndarray' 对象不可调用)
- r - 将变音符号保存在 R 中的 .csv 中
- excel - Excel - 将文本反转为列
- c# - 调用 transform.Translate 时播放器不移动
- postgresql - 使用 GORM 从 JoinTable 获取具有顺序的关联对象
- wildcard - Snakemake 在新规则中指定新通配符
- python - 如何从主函数返回字符串?
- javascript - jQuery/Javascript - 如何在所有浏览器(尤其是 Safari)中获取与 CSS 断点一致的浏览器窗口宽度?
- r - 如何排除故障:RODBC 错误:状态 08001,代码 0,