如何将复选框“ check”插入我的MS Access数据库

克林特·乔

这是我的数据库:

我的资料库

这是我的代码

OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "insert into StudentTable([StudentID], [Lastname], [Transferee]) values ('" +txtStudentID.Text+ "','" +txtLastname.Text +"',"' +chk.Transferee+ '")";
command.ExecuteNonQuery();

错误是数据类型不匹配条件表达式

如何将复选框添加到数据库检查中(而不是复选框的值)?

谢谢

保维林

关于代码的一些说明:

  1. 您代码中的错字(最新更新)
  2. C#布尔值≠ Transact-SQL位。
  3. 您进行SQL注入。
  4. 您可以使用IDENTITYStudentID

您代码中的错字

我还在您的代码中看到在insert语句的末尾有一个错字,您可以使用以下命令:

/*...*/ "',"' +chk.Transferee+ '")";

代替这个:

/*...*/ "'," + chk.Transferee.IsChecked + ")";

对此:

/*...*/ "','" + chk.Transferee.IsChecked + "')";

无论如何,这是SQL注入,并且chk.Transferee.IsChecked是C#布尔值而不是Transact-SQL位。因此,我们可以转到下一个标题。

C#布尔值≠Transact-SQL位

如果您在下面运行代码:

using System;

public class Program
{
    public static void Main()
    {
        bool? yes = true;
        Console.WriteLine("yes: {0}", yes);

        bool? no = false;
        Console.WriteLine("no: {0}", no);

        bool? nothing = null;
        Console.WriteLine("nothing: {0}", nothing);
    }
}

它将打印以下内容:

yes: True
no: False
nothing:

您可以在此.NET小提琴上对其进行测试

Transact-SQL对“ true”或“ false”使用一点。在Transact-SQL中,这分别是a1和a 0如果错字是固定的,您愿意使用此代码分别是这样的:

insert into StudentTable([StudentID], [Lastname], [Transferee]) 
values (7, 'Turner', True)

对此:

insert into StudentTable([StudentID], [Lastname], [Transferee]) 
values (7, 'Turner', 'True')

这不是Transact-SQL的有效代码。因为布尔值true和带值的字符串True不是bit 1

旁:可为空的布尔值(仅当您使用WPF或必须插入时null

如果您使用的是WPF,则IsChecked属性为nullabele,或者仅插入null您的代码将给出一个例外。这将是您的SQL查询:

insert into StudentTable([StudentID], [Lastname], [Transferee]) 
values (7, 'Turner', )

对此:

insert into StudentTable([StudentID], [Lastname], [Transferee]) 
values (7, 'Turner', '')

这当然是无效的。

正确陈述

正确的陈述必须是这样的:

insert into StudentTable([StudentID], [Lastname], [Transferee]) 
values (7, 'Turner', 1)

在此SQLfiddle中测试此代码

防止SQL注入

Wikipedia谈到SQL注入

SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序,其中将恶意的SQL语句插入到输入字段中以执行(例如,将数据库内容转储给攻击者)。

您可以使用以下代码来代替您的代码:

command.CommandText = @"insert into StudentTable([StudentID], [Lastname], [Transferee]) 
                        values (@StudentID, @LastName,@Transferee)";

command.Parameters.AddWithValue("@StudentID", txtStudentID.Text);
command.Parameters.AddWithValue("@LastName", txtLastname.Text);
command.Parameters.AddWithValue("@Transferee", chk.Transferee.IsChecked);
// @ClintJoe: Will you check code of line above I think it's not correct.
// must it not to be this: `chk.IsChecked`? Not sure.

如果您使用上面的代码并解决了我添加的问题,则第一个问题(代码中的键入错误),第二个标题(C#布尔值≠Transact-SQL位)以及所有问题都会被解决。

这也将防止SQL注入。但是,为什么不进行SQL注入呢?看到这个卡通:

关于SQL注入的卡通

身份

提示:还要使列StudentID 标识

IDENTITY在表中创建一个标识列。该属性与CREATE TABLEALTER TABLETransact-SQL语句一起使用。

完成此操作后,您可以使用以下代码:

command.CommandText = @"insert into StudentTable([Lastname], [Transferee]) 
                        values (@LastName, @Transferee)";

command.Parameters.AddWithValue("@LastName", txtLastname.Text);
command.Parameters.AddWithValue("@Transferee", chk.Transferee.IsChecked);

并且不再需要在应用程序中请求或创建唯一的ID

笔记

MS-access不是一个很好的数据库。通过Google的快速搜索,我发现Access的主要缺点:

  1. Windows和Office版本取决于。
  2. Access没有触发器和高级功能。
  3. Access VBA是一种解释性语言。因此,它很慢。
  4. 不存在用于性能分析和优化数据库的访问工具。
  5. 如果您有5-10个以上的并发用户,即使在拆分(前端/后端)数据库中,访问也会变得非常慢。
  6. 当访问文件太大(每mdb> 100MB)时,它们很容易损坏。
  7. 即使在拆分数据库上,Access始终会计算客户端的所有内容。

资料来源:Microsoft Access的主要缺点是什么?-Quora

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VB .net:如何将值放在复选框上(数据库:MS Access)

来自分类Dev

如何将复选框表单插入类型集的数据库属性

来自分类Dev

如何将laravel复选框值插入数据库?

来自分类Dev

当面颊值也已从数据库中检索时,如何将复选框数组的值插入数据库?

来自分类Dev

将复选框值插入数据库

来自分类Dev

我如何直接将复选框值传递给数据库

来自分类Dev

使用Python将数据插入MS Access数据库

来自分类Dev

如何根据我的代码将复选框数据保存到数据库中,知道吗?

来自分类Dev

PHP:如何获取数组复选框的值,然后将每个单独的结果插入数据库查询中?

来自分类Dev

如何使用复选框和html select的组合将多个记录插入mysql数据库

来自分类Dev

使用Codeigniter将数据从复选框数组插入数据库

来自分类Dev

使用复选框php将数据插入mysql数据库

来自分类Dev

如何将值插入数据库(Microsoft Access)?

来自分类Dev

如何将复选框数组中的数据保存到数据库中

来自分类Dev

如何使用查询从数据库中获取复选框插入的数据

来自分类Dev

将记录插入Access数据库

来自分类Dev

将类别插入复选框值发布到数据库中

来自分类Dev

PHP将多个复选框和文本框数组插入MySQL数据库

来自分类Dev

插入数据库数组复选框导轨

来自分类Dev

如何将多个复选框值发送到laravel中的数据库?

来自分类Dev

如何将多个选定的复选框值保存到数据库 mvc

来自分类Dev

如何将复选框中的值添加到数据库

来自分类Dev

我正在尝试将复杂的复选框形式的值存储在mysql数据库中

来自分类Dev

如何在Laravel中将复选框值插入数据库?

来自分类Dev

如何使用php在数据库的单列中插入多个复选框值

来自分类Dev

C#将数据从表单插入Access数据库

来自分类Dev

使用.NET Core将数据插入Access数据库

来自分类Dev

优化将数据插入Access数据库代码中

来自分类Dev

使用SQL将数据插入MS Access数据库表

Related 相关文章

  1. 1

    VB .net:如何将值放在复选框上(数据库:MS Access)

  2. 2

    如何将复选框表单插入类型集的数据库属性

  3. 3

    如何将laravel复选框值插入数据库?

  4. 4

    当面颊值也已从数据库中检索时,如何将复选框数组的值插入数据库?

  5. 5

    将复选框值插入数据库

  6. 6

    我如何直接将复选框值传递给数据库

  7. 7

    使用Python将数据插入MS Access数据库

  8. 8

    如何根据我的代码将复选框数据保存到数据库中,知道吗?

  9. 9

    PHP:如何获取数组复选框的值,然后将每个单独的结果插入数据库查询中?

  10. 10

    如何使用复选框和html select的组合将多个记录插入mysql数据库

  11. 11

    使用Codeigniter将数据从复选框数组插入数据库

  12. 12

    使用复选框php将数据插入mysql数据库

  13. 13

    如何将值插入数据库(Microsoft Access)?

  14. 14

    如何将复选框数组中的数据保存到数据库中

  15. 15

    如何使用查询从数据库中获取复选框插入的数据

  16. 16

    将记录插入Access数据库

  17. 17

    将类别插入复选框值发布到数据库中

  18. 18

    PHP将多个复选框和文本框数组插入MySQL数据库

  19. 19

    插入数据库数组复选框导轨

  20. 20

    如何将多个复选框值发送到laravel中的数据库?

  21. 21

    如何将多个选定的复选框值保存到数据库 mvc

  22. 22

    如何将复选框中的值添加到数据库

  23. 23

    我正在尝试将复杂的复选框形式的值存储在mysql数据库中

  24. 24

    如何在Laravel中将复选框值插入数据库?

  25. 25

    如何使用php在数据库的单列中插入多个复选框值

  26. 26

    C#将数据从表单插入Access数据库

  27. 27

    使用.NET Core将数据插入Access数据库

  28. 28

    优化将数据插入Access数据库代码中

  29. 29

    使用SQL将数据插入MS Access数据库表

热门标签

归档