每当我运行代码并尝试运行SQL查询时,它都会说数据类型不匹配 代码如下:
Public Class Form7
Public insert As New DBController
Public username, password, ID As String
Public chars(20) As Char
Public cc As Integer
Private Sub BTNSaveRecord_Click(sender As Object, e As EventArgs) Handles BTNSaveRecord.Click
chars = TXTLastName.Text.ToCharArray
ID = chars(0) & chars(1) & chars(2)
insert.AddParameters("@ID", ID)
insert.MakeQuery("SELECT Driver_ID FROM Driver WHERE Driver_ID LIKE '%@ID%'")
ID = ID & (insert.recordcount + 120).ToString
insert.clearDT()
cc = Conversion.Val(TXTCarCapacity.Text)
MsgBox(cc)
insert.AddParameters("@ID", ID)
insert.AddParameters("@Fname", TXTFirstName.Text)
insert.AddParameters("@Lname", TXTLastName.Text)
insert.AddParameters("@CarCap", cc)
insert.AddParameters("@pass", "Password1")
username = TXTFirstName.Text & TXTLastName.Text.First
MsgBox(username)
MsgBox(ID)
insert.AddParameters("@user", username)
insert.MakeQuery("INSERT INTO Driver (Driver_ID,Maximum_Case_Capacity,Driver_Username,Driver_Password,Driver_FirstName,Driver_LastName) " &
"VALUES (@ID,@CarCap,@user,@pass,@Fname,@Lname);")
End Sub
如果你想知道DB控制器的代码我有代码。这是一个自定义类,使SQL内容重复性降低。与数据适配器命令构建器和数据表一样。
这是我在插入新记录的数据库中的表。这也没有关系,它会阻止我输入新记录。该图像包含每个字段的数据类型类型
maximum_case_capacity的详细信息
答案 0 :(得分:0)
Access并不关心你所谓的参数;这些名字被忽略了。添加参数的顺序是将它们与数据库匹配。由于字段的顺序与添加参数的顺序不匹配,因此Access尝试将字符串FName添加到数字字段Maximum_Case_Capacity时会出现类型不匹配。
insert.AddParameters("@ID", ID)
insert.AddParameters("@CarCap", cc)
username = TXTFirstName.Text & TXTLastName.Text.First
insert.AddParameters("@user", username)
insert.AddParameters("@pass", "Password1")
insert.AddParameters("@Fname", TXTFirstName.Text)
insert.AddParameters("@Lname", TXTLastName.Text)
在实际应用程序中,您永远不会将密码添加为纯文本。此外,如果在Access中使用数字自动增量字段,则可以避免使用有趣的舞蹈来获取唯一的主键(可能)。我担心你会很快耗尽那个领域的空间,因为它只有6个字符宽。希望你能得到太多名叫史密斯的人。 ;-)