簡體   English   中英

如何使用 Visual Studio 在 C# 的數據庫中存儲和加載復選框狀態

[英]How to store and load checkbox states in database in C# with Visual Studio

我正在 Visual Studio 中開發 windows forms 應用程序。 我有一個帶有復選框的表單。 我想將選中的 state 保存在數據庫中。 后來我想從該數據庫中加載復選框的 state 。

我正在使用此查詢字符串將復選框 state 保存到數據庫中:

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

在我的數據庫中,我使用的是 boolean。

要加載復選框的 state,我使用的是:

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 中,那么您可以從該字符串加載 state

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

注意: TryParse 不適用於其他文本。 而且我沒有正確檢查您的 sql 查詢。 請檢查 c# 代碼並嘗試它,讓我知道它是否有效。

我找到了這個可行的解決方案:

  1. 首先,我將復選框的 state 存儲為 SMALLINT 類型

  2. 這是將復選框 state 保存到數據庫中的查詢字符串:

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

  3. 現在我正在使用此代碼將復選框的檢查狀態加載到 winform 中(如您所見,我已經停止使用 datagridview 作為源):

    checkBox_VS.Checked = Convert.ToBoolean(da.GetValue(4));

現在我可以從數據庫中加載復選框的 state 並在我的表單中選中(取消)復選框!

感謝您讓我走上正軌:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM