我有一个访问数据库设置,我通过ODBC连接,访问文件已经内置了所有必需的查询,我很想在我的应用程序中调用它们。
我正在使用Visual Basic .NET,这是我到目前为止所尝试的......
提前感谢您提供的任何帮助。
本
Dim command As OdbcCommand = New OdbcCommand
command.Connection = cnx
command.CommandText = "sp_InsertClient"
command.CommandType = CommandType.StoredProcedure
'//====== create ABN paramenter =============
Dim param1 As OdbcParameter = New OdbcParameter("inABN", abn)
param1.Direction = ParameterDirection.Input
param1.DbType = DbType.String
'add abn parameter
command.Parameters.Add(param1)
Dim dataAdapter As OdbcDataAdapter = New OdbcDataAdapter(command)
dataAdapter.InsertCommand = command
Try
cnx.Open()
dataAdapter.InsertCommand.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
Finally
cnx.Close()
End Try
MessageBox.Show("DONE")
答案 0 :(得分:0)
那么,你的问题是什么?
查看上面的代码,您不需要dataAdapter
您可以致电command.ExecuteNonQuery()
来完成工作。
编辑:此外,你可以包装OdbcConnection& OdbcCommand在using...end using
块中。
答案 1 :(得分:0)
这是VB代码
Public Sub AddClient(ByVal abn As String, ByVal companyName As String, _
ByVal contactName As String, ByVal phoneNumber As String, _
ByVal address As String)
'Dim command As OdbcCommand = New OdbcCommand
Using cnx As New OdbcConnection(My.Settings.connectionString)
Using command As New OdbcCommand
command.Connection = cnx
command.CommandText = "sp_InsertClient"
command.CommandType = CommandType.StoredProcedure
'//====== create ABN paramenter =============
Dim param1 As OdbcParameter = New OdbcParameter("inABN", abn)
param1.Direction = ParameterDirection.Input
param1.DbType = DbType.String
'add abn parameter
command.Parameters.Add(param1)
'//====== create CompanyName Parameter ================
Dim param2 As OdbcParameter = New OdbcParameter("inCompanyName", companyName)
param2.Direction = ParameterDirection.Input
param2.DbType = DbType.String
'add the parameter
command.Parameters.Add(param2)
'//======== create ContactName Param ===============
Dim param3 As OdbcParameter = New OdbcParameter("inContactName", contactName)
param3.Direction = ParameterDirection.Input
param3.DbType = DbType.String
'add the parameter
command.Parameters.Add(param3)
'//=========== create PhoneNumber Parameter ===============
Dim param4 As OdbcParameter = New OdbcParameter("inPhoneNumber", phoneNumber)
param4.Direction = ParameterDirection.Input
param4.DbType = DbType.String
'add paramater
command.Parameters.Add(param4)
'//=========== create Address Parameter ===============
Dim param5 As OdbcParameter = New OdbcParameter("inAddress", address)
param5.Direction = ParameterDirection.Input
param5.DbType = DbType.String
'add paramater
command.Parameters.Add(param5)
Try
cnx.Open()
command.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try
End Using
End Using
MessageBox.Show("DONE")
End Sub
这是我在Access中的查询。
INSERT INTO tblClients ( ABN, CompanyName, ContactName, PhoneNumber, Address )
VALUES ([inABN], [inCompanyName], [inContactName], [inPhoneNumber], [inAddress]);
感谢所有帮助...
答案 2 :(得分:0)
编辑我的旧答案......这是错误的
在访问中使用预构建查询的另一种方法是将它们定义为访问中的存储过程。 Working with MS Access Stored Procedures in VB.NET. Part 1是对此的一个很好的概述。
答案 3 :(得分:0)
感谢他们已经看过他们的链接,但错过了EXECUTE的添加,这似乎是让查询立即运行,但我的参数没有传递给访问查询。
我已经过测试,我的参数已添加到命令中,但未添加到访问查询中?
我也尝试过Parameters.AddWithValue(“paramname”,value)
但这是相同的结果
我也改变了我对查询的查询,结果显示了不需要的方括号......
INSERT INTO tblClients(ABN,CompanyName,ContactName,PhoneNumber,Address) VALUES(inABN,inCompanyName,inContactName,inPhoneNumber,inAddress)
由于 本