【问题标题】:Sending checkBox value to access database发送复选框值以访问数据库
【发布时间】:2020-10-20 10:13:02
【问题描述】:

我有一个 Access 数据库。我正在创建一个 Winforms 应用程序来管理它。所以我制作了这个表格,允许用户在数据库中创建一个新条目。我已经成功地将文本框中的文本值传递到数据库中,但是当涉及到复选框时我被卡住了。

在我的 Access 数据库中的表中有一个名为“LABEL”的列,它是一个是/否字段。我需要将复选框的状态附加到该字段。

这是我目前的代码,我正在考虑如何实现它。

private void btn_Next_Click(object sender, EventArgs e)
{
    try 
    {
        connection.Open();

        OleDbCommand command = new OleDbCommand();
        command.Connection = connection;
        command.CommandText = "insert into COMPUTERS (PCNAME, PROCESSOR, DRIVE, RAM, COMMENT, YEAR_MADE, LOC_SITE, CONS_DATA, OLD_ID, TYPE, COMPANY, DONOR, LOCATION, LABEL) values('"+ txt_PCName.Text + "', '"+ txt_Processor.Text+ "', '" + txt_Drive.Text + "','" + txt_RAM.Text + "', '" + txt_Comment.Text + "', '" + txt_Year.Text + "', '" + txt_LocSite.Text + "', '" + txt_ConData.Text + "', '" + txt_OldID.Text + "','" + comboBoxType.Text + "','" + comboBoxCompany.Text + "','" + comboBoxDonor.Text + "','" + comboBoxLocation.Text + "')";

        command.ExecuteNonQuery();
        MessageBox.Show("Καταχώρηση επιτυχής.");
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error   " + ex);
    }

    connection.Close();
}

如果可能,我想将其添加到当前查询中。

提前致谢。对不起,如果代码草率,初学者的东西。

【问题讨论】:

  • 使用命令参数来定义您要存储的数据的值和类型。 CheckBox 值为boolYes/No 字段为bool。只需存储 CheckBox 的当前Checked 状态即可。使用Parameters。请注意,Access 参数是位置参数,而不是命名(您可以简单地使用 ? 作为占位符):仅考虑添加它们的顺序。

标签: c# sql sql-insert


【解决方案1】:

复选框具有 Checked 属性,无论是否选中,该属性都返回 true 或 false

所以你可以像下面这样声明一个变量: 字符串标签=“否”; 如果(复选框12.选中) 标签=“是”;

或 标签 = checkbox12.Checked ? “是”:“否”; 您可以在查询中使用此变量

【讨论】:

  • 谢谢,其实我也想过这样做!我只是停留在需要将此值传递到我的数据库以及如何执行此操作的部分。
【解决方案2】:

使用字符串连接作为构造查询的一种方式是个坏主意。它使您的代码容易受到SQL injection 攻击,以及如果值不幸,查询中的语法错误。

更安全的方法是使用参数。执行此操作时,您可以考虑参数的类型。该复选框有一个Checked 属性,指示它是否被选中,或者如果它是一个“三向”复选框,那么您需要使用CheckState

另请注意,您的命令是 IDisposable,因此应该在 using 块中。

【讨论】:

  • 感谢您的回复,但我并不真正担心此项目的 SQL 注入攻击,并且现在对切换到使用参数不感兴趣。
  • @myrtillobruh 好的,那么您应该尝试在 Donor 为 O'Reilly...的位置插入一个值...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 2013-11-22
相关资源
最近更新 更多