将记录插入数据库

时间:2018-03-12 20:57:29

标签: sql vb.net insert sqldatatypes

每当我运行代码并尝试运行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的详细信息 enter image description here

1 个答案:

答案 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个字符宽。希望你能得到太多名叫史密斯的人。 ;-)