Vb.net 靠近'的语法不正确;4';
我有一个插入代码,其中变量s=4。非常感谢您的帮助Vb.net 靠近'的语法不正确;4';,vb.net,syntax,insert,Vb.net,Syntax,Insert,我有一个插入代码,其中变量s=4。非常感谢您的帮助 con.Open() Dim cmd As New SqlCommand("INSERT INTO Employee VALUES('" & txtfname.Text & "','" & txtmi.Text & "','" & txtlname.Text & "','" & txtssn.Text & "','" & txtbdate.Text
con.Open()
Dim cmd As New SqlCommand("INSERT INTO Employee VALUES('" & txtfname.Text & "','" & txtmi.Text & "','" & txtlname.Text & "','" & txtssn.Text & "','" & txtbdate.Text & "','" & txtaddress.Text & "','" & cmbsex.Text.ToUpper & "','" & txtsalary.Text & "','" & DBNull.Value & "','" & s & "'", con)
Dim cmd1 As New SqlCommand("INSERT INTO Depndent VALUES('" & txtessn.Text & "','" & txtdepname.Text & "','" & cmbdsex.Text.ToUpper & "','" & txtdbdate.Text & "','" & txtrelationship.Text & "'", con)
cmd.ExecuteNonQuery()
cmd1.ExecuteNonQuery()
cleartxt()
con.Close()
你忘记了结束语了。) …l.Value&“,”&s&“),con)
你忘记了结束语了。) …l.Value&“,”&s&“),con)
错误使用闭合括号
)
错误使用闭合括号
)
你错过了结尾的括号。像这样改变它
Dim cmd As New SqlCommand("INSERT INTO Employee VALUES('" & txtfname.Text & "','" & txtmi.Text & "','" & txtlname.Text & "','" & txtssn.Text & "','" & txtbdate.Text & "','" & txtaddress.Text & "','" & cmbsex.Text.ToUpper & "','" & txtsalary.Text & "','" & DBNull.Value & "','" & s & "')", con)
你错过了结尾的括号。像这样改变它
Dim cmd As New SqlCommand("INSERT INTO Employee VALUES('" & txtfname.Text & "','" & txtmi.Text & "','" & txtlname.Text & "','" & txtssn.Text & "','" & txtbdate.Text & "','" & txtaddress.Text & "','" & cmbsex.Text.ToUpper & "','" & txtsalary.Text & "','" & DBNull.Value & "','" & s & "')", con)
缺少结束参数是您遇到的较小问题之一:
' an XML literal
Dim SQL = <sql>
INSERT INTO Employee
(FirstName, LastName, SocSecNum, BirthDate,
Address, Gender
...)
VALUES
(@firstN, @lastN, @SSN ... )
</sql>
Using cmd As New SqlCommand(sql.Value, con)
...
cmd.Parameters.AddWithValue("@firstN", txtfname.Text)
cmd.Parameters.AddWithValue("@lastN", txtlname.Text)
...
cmd.ExecuteNonQuery()
...
End Using ' disposes of the object when done
无论使用哪种方法,OP中缺失的帕伦都会更加明显,根本不太可能发生。接下来,有些列似乎是数字的,例如Salary和BirthDate,这样的SQL可能是错误的:
... & "','" & txtbdate.Text & "','" & txtsalary.Text & "','" ...
在值周围放置记号可确保将字符串传递给dbLayer。若Salary是一个数字列,DateOfBirth是一个日期列——这是应该的——那个么您很可能会得到一个数据类型不匹配错误。参数使传递正确的数据类型变得更容易,因为您可以看到正在使用的内容:
cmd.Parameters.AddWithValue("@DOB", CDate(txtbdate.Text))
cmd.Parameters.AddWithValue("@Salary", CDec(txtsalary.Text))
(注意,当使用OleDB时,参数只是顺序的,因此确保AddWithValue
的顺序与SQL中指定的顺序相同)。传递错误的数据类型可能会导致dblayer做出一些假设,为了避免这种情况,您可以长期这样做:
cmd.Parameters.Add("@firstN", SqlDbType.VarChar, 32) ' 32 = column def
cmd.Parameters("@firstN").Value = txtfname.Text
还有一个问题是,代码似乎没有执行任何数据验证。如果他们键入“我喜欢馅饼”作为薪水怎么办?或者输入“02/31/1986”(mm/dd)作为生日?您的代码将深入此过程。因此,在用户输入上使用诸如
DateTime.TryParse
和Integer.TryParse
之类的东西进行数据验证应该(并且可能已经)在更远的上游进行。缺少关闭参数是您遇到的较小问题之一:
' an XML literal
Dim SQL = <sql>
INSERT INTO Employee
(FirstName, LastName, SocSecNum, BirthDate,
Address, Gender
...)
VALUES
(@firstN, @lastN, @SSN ... )
</sql>
Using cmd As New SqlCommand(sql.Value, con)
...
cmd.Parameters.AddWithValue("@firstN", txtfname.Text)
cmd.Parameters.AddWithValue("@lastN", txtlname.Text)
...
cmd.ExecuteNonQuery()
...
End Using ' disposes of the object when done
无论使用哪种方法,OP中缺失的帕伦都会更加明显,根本不太可能发生。接下来,有些列似乎是数字的,例如Salary和BirthDate,这样的SQL可能是错误的:
... & "','" & txtbdate.Text & "','" & txtsalary.Text & "','" ...
在值周围放置记号可确保将字符串传递给dbLayer。若Salary是一个数字列,DateOfBirth是一个日期列——这是应该的——那个么您很可能会得到一个数据类型不匹配错误。参数使传递正确的数据类型变得更容易,因为您可以看到正在使用的内容:
cmd.Parameters.AddWithValue("@DOB", CDate(txtbdate.Text))
cmd.Parameters.AddWithValue("@Salary", CDec(txtsalary.Text))
(注意,当使用OleDB时,参数只是顺序的,因此确保AddWithValue
的顺序与SQL中指定的顺序相同)。传递错误的数据类型可能会导致dblayer做出一些假设,为了避免这种情况,您可以长期这样做:
cmd.Parameters.Add("@firstN", SqlDbType.VarChar, 32) ' 32 = column def
cmd.Parameters("@firstN").Value = txtfname.Text
还有一个问题是,代码似乎没有执行任何数据验证。如果他们键入“我喜欢馅饼”作为薪水怎么办?或者输入“02/31/1986”(mm/dd)作为生日?您的代码将深入此过程。因此,在用户输入上使用诸如
DateTime.TryParse
和Integer.TryParse
之类的东西进行的数据验证应该(并且可能已经)在更远的上游进行。在s&“')另一个问题,将这两个插入命令与更新命令放在一起可以吗?在s&“')之后缺少闭合括号)另一个问题,将这两个插入命令与更新命令放在一起可以吗?