似乎找不到其他转换方式:
sql = "insert into Attendance values('" & Label1.Text & "','" & Button1.Text & "','" & Date.Today & "','" & TimeOfDay & "','null' )
Label1.Text
是来自员工数据库的EmpID
button1.text是状态,是时间或超时的时间(备注)
SQL Server出勤管理中的代码是:
create table Attendance
(
EmpID varchar(25) foreign key references Employee(EmpID),
remarks varchar (25) primary key not null,
checkdate date,
tin time,
tout time,
)
这是编写/运行数据库查询的可怕方法。基本上,发生的事情是,当SQL字符串组装时,您的日期值正在通过Visual Basic转换为字符串表示,但是SQL-Server无法将生成的字符串变成日期
幸运的是,它不必必须,您应该专门编写查询,以便它不必
看起来应该更像:
Dim sqlC as New SqlCommand("INSERT INTO attendance VALUES(@emp, @rem, @dat, @tin, null)", myConnectionStringVariable)
sqlC.Parameters.AddWithValue("emp", Label1.Text)
sqlC.Parameters.AddWithValue("rem", Button1.Text)
sqlC.Parameters.AddWithValue("dat", Date.Today)
sqlC.Parameters.AddWithValue("tin", DateTime.Now)
请至少查找有关参数化查询的一些教程。再也没有(永远不会)编写一个SQL,其中您要在SQL中包含的值,从某些UI组件中包含在SQL命令字符串
中。更好的是,停止在按钮单击事件处理程序中编写SQL代码,然后使用ORM库(数据集,实体框架,NHIBERNATE等)
)您的代码是一种巨大的安全风险,并且是批发的模式,可以完全避免