【发布时间】:2019-11-18 15:20:00
【问题描述】:
我正在为我的大学班级制作一个 C# 客户端-服务器应用程序。 我有一个带有表包的 MS Access 数据库,它有一些值,如“name”、“dateFrom”、“dateTo”,以及 2 个名为“internet”和“telephone”的值,它们是 YES/NO 类型
在程序中,我创建了一个类 Package 并将 internet 和 phone 设置为 bool 类型的数据。首先,这是正确的吗?如果值在 MS Access 中设置为 YES/NO,我应该在 C# 中将其设置为 bool 吗?这对我来说似乎是合乎逻辑的..
其次,当我输入用于插入这些值的 SQL 命令时出现错误,我不知道如何将布尔值发送到数据库
这是我的代码
command.CommandText = "Insert into Package values ("+p.PackageID+", '"+ p.Name+"', '"+p.DateFrom.ToString()+"', '"+p.DateTo.ToString()+"', "+Convert.ToBoolean(p.Internet.ToString())+", "+Convert.ToBoolean(p.Telephone.ToString())+")";
command.ExecuteNonQuery();
我尝试了很多东西,这是我最后一次尝试将值转换为能够插入它们..但它不起作用.. 我总是得到 System.InvalidOperationException
【问题讨论】:
-
请不要使用字符串连接来创建 SQL 命令。使用参数化语句来传递值。您的程序面临 SQL 注入攻击的风险。
-
即使你只是在学习,也不要在参数上走捷径。您应该学习正确的方法,并一起避免坏习惯。查看 - [dotnetperls.com/sqlparameter]欢迎使用 stackoverflow!
-
“p.Internet.ToString()”和“p.Telephone.ToString()”的值是多少?是/否还是真/假?