vb.net - vb.net(在Visual Studio 2013中制造)和Access DB的几个问题

标签 vb.net error-handling insert

我正在尝试使用带有2个表的访问数据库(2010)在vb.net中创建Windows窗体应用程序(作为主要思想,我正在尝试创建银行贷记应用程序)。我使用一张表进行登录,另一张表将元素从Windows窗体插入其中。

对于登录表,一切正常,但是对于第二个表(客户端),我遇到了一些问题。

客户的表详细信息是:ID(自动编号),名字(文本),姓氏(文本),PID(数字),地址(文本),城市(文本),婚姻状况(文本),无子女(数字) ,日期(日期/时间)。

我为客户表创建了一个插入查询,如下所示:

INSERT INTO `Clienti` (`nume`, `prenume`, `cnp`, `adresa`, `localitate`, `stare civila`) VALUES (?, ?, ?, ?, ?, ?, ?, ?).

在Windows窗体中,我具有以下元素:名(文本框),姓(文本框),PID(文本框),地址(文本),城市(文本),婚姻状况(文本)和一个按钮应该将它们保存到我的客户表中。

保存到数据库按钮的代码是:
Convert.ToInt32(cnptxt.Text)
Convert.ToInt32(numarcopiitxt.Text)

Dim cnpp As Integer
cnpp = Val(cnptxt.Text)
Dim nrcopii As Integer
nrcopii = Val(numarcopiitxt.Text)

Dim nume As String

Dim prenume As String
Dim cnp As Integer
Dim varsta As Integer
Dim adresa As String
Dim localitate As String
Dim starecivila As String
Dim numarcopii As Integer

nume = numetxt.Text
prenume = prenumetxt.Text
cnp = cnpp
varsta = varstatxt.Text
adresa = adresatxt.Text
localitate = localitatetxt.Text
starecivila = starecivilatxt.Text
numarcopii = numarcopiitxt.Text
If Me.ClientiTableAdapter.InsertQueryClienti(nume, prenume, cnp, varsta, adresa, localitate, starecivilatxt.Text) Then
    MsgBox("Client adaugat cu succes in baza de date")
Else
    MsgBox("O eroare a fost intalnita intr-unul din campurile completate. Reincercati!")
End If

与客户端表中的行相比,我知道它是不完整的,这是由于我在保存到数据库时遇到的问题。当我运行该应用程序并点击“保存到数据库”按钮时,出现以下错误:
An unhandled exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll

Additional information: Conversion from string "necasatorit" to type 'Integer' is not valid.

InsertQueryClienti的代码为INSERT INTO Clienti(numeprenumecnpadresalocalitatestare civila)VALUES(?,?,?,?,?,?,?,?,?),并且其定义为Public Overloads Overridable Function InsertQueryClienti (ByVal作为字符串,ByVal作为字符串,ByVal作为字符串,ByVal cnp作为Global.System.Nullable(整数),ByVal adresa作为字符串,ByVal本地化为字符串,ByVal stare_civila作为字符串,ByVal numarcopii作为Global.System.Nullable(整数) ))作为整数

necasatorit指的是婚姻状况文本框。我不明白为什么它会给我这个错误,因为文本框显然是一个字符串,并且在表中该行被设置为文本。

最佳答案

您对InsertQueryClienti()的定义如下:

Public Overloads Overridable Function InsertQueryClienti(
    ByVal nume As String, 
    ByVal prenume As String, 
    ByVal cnp As Global.System.Nullable(Of Integer), 
    ByVal adresa As String, 
    ByVal localitate As String, 
    ByVal stare_civila As String, 
    ByVal numarcopii As Global.System.Nullable(Of Integer)) As Integer

但是您这样称呼它:
InsertQueryClienti(nume, prenume, cnp, varsta, adresa, localitate, starecivilatxt.Text)

前三个参数numeprenumecnp相同,但是之后使用varsta
这会将所有内容向右移动。 starecivilatxt.Text作为最后一个参数传递
类型为Integer。

这样,参数在定义和调用中的顺序相同。
InsertQueryClienti(nume, prenume, cnp, adresa, localitate, starecivilatxt.Text, ???)

我不知道最后一个参数应该是什么。也许varsta

关于vb.net - vb.net(在Visual Studio 2013中制造)和Access DB的几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24550246/

相关文章:

vb.net - 隐藏 LookUpEdit 中的列 (DevExpress)

c# - 将 json 数组转换为数据表 asp.net

c# - 使用 Interop Excel 保存 XLS

python - MySQL插入字符串,python插入为单个字符

mysql - SQL AI 索引在插入失败时增加是否有任何特殊原因?

java - 如何在同一个查询中同时将两个Arraylist值插入到数据库表中

c# - 适用于 .net 的 Google 提醒 API

php - 引用 - 这个错误在 PHP 中意味着什么?

c# - 是否可以捕获对象引用上的哪个对象未设置为对象的实例。错误

python - 分别处理特定(针对io)的异常