对于学校,我们必须做一个3 3tier的申请。具有数据库、webservice和客户端部分。现在我有了以下存储过程,
ALTER PROCEDURE dbo.addMovie
(
@film_naam nvarchar(50),
@film_hoofdrol nvarchar(50)
)
AS
/* SET NOCOUNT ON */
INSERT INTO tbl_film
(film_naam, film_status, film_hoofdrol)
VALUES(@film_naam,0,@film_hoofdrol)
RETURN当我执行这个任务时,效果很好。但是当我在我的webservice中尝试它时,我会得到以下错误。
System.NullReferenceException:未设置为对象实例的对象引用。在D:\School\Programmeren 2\Movie_rent\Movie_rent\App_code\Movie_rentDB.vb:line VB.net\Periode 105 at Movie_rent.Movie_web.addMovie(String film_naam,String film_hoofdrol)中的Movie_rent.Movie_rentDB.addMovie(String film_naam,String film_hoofdrol):\School\Programmeren VB.net\Periode VB.net\Periode 40
我的webservice部分
<WebMethod()> _
Public Function addMovie(ByVal film_naam As String, ByVal film_hoofdrol As String) As Boolean
Dim Movie_rent As New Movie_rentDB()
Return Movie_rent.addMovie(film_naam, film_hoofdrol)
End Function还有我的Movie_rentDB课
Public Class Movie_rentDB
Private strApplicationName As String = "Movie rent"
Private strConnection As String
Private conMovie As SqlConnection
Private adapMovie As New SqlDataAdapter
Private CommandMovie As SqlCommand
Private DataSetMovie As New DataSet
Private sqlTransaction As SqlTransaction
Private objLoggingService As Logging.Logging = New Logging.Logging("d:\\WebService.log")
Public ReadOnly Property ConnectionString() As String
Get
Try
Return ConfigurationManager.ConnectionStrings("Movie_rent").ConnectionString
Catch ex As Exception
objLoggingService.WriteLine(strApplicationName, ex.Message)
Throw (ex)
End Try
Return ""
End Get
End Property
Public Sub CreateConnection()
Try
conMovie = New SqlConnection(ConnectionString)
Catch ex As Exception
objLoggingService.WriteLine(strApplicationName, ex.Message)
Throw (ex)
End Try
End Sub
Private Sub Prepare_StoredProcedureCall(ByVal strStoredProcedure As String)
Try
CommandMovie = New SqlCommand(strStoredProcedure, conMovie)
CommandMovie.CommandType = CommandType.StoredProcedure
adapMovie = New SqlDataAdapter(CommandMovie)
DataSetMovie = New DataSet()
conMovie.Open()
sqlTransaction = conMovie.BeginTransaction
CommandMovie.Transaction = sqlTransaction
Catch ex As Exception
objLoggingService.WriteLine(strApplicationName, ex.Message)
Throw (ex)
End Try
End Sub
Private Sub Finish_StoredProcedureCall()
Try
If (conMovie.State = ConnectionState.Open) Then
conMovie.Close()
End If
Catch ex As Exception
objLoggingService.WriteLine(strApplicationName, ex.Message)
Throw (ex)
End Try
End Sub
Public Function getAllMovies() As DataSet
Try
Prepare_StoredProcedureCall("getAllMovies")
adapMovie.Fill(DataSetMovie, "tbl_film")
sqlTransaction.Commit()
Catch ex As Exception
If Not (sqlTransaction Is Nothing) Then
sqlTransaction.Rollback()
End If
DataSetMovie = Nothing
objLoggingService.WriteLine(strApplicationName, ex.Message)
Throw (ex)
End Try
Try
Finish_StoredProcedureCall()
Catch ex As Exception
DataSetMovie = Nothing
Throw (ex)
End Try
Return DataSetMovie
End Function
Public Function addMovie(ByVal film_naam As String, ByVal film_hoofdrol As String) As Boolean
Dim bStatus As Boolean = False
Try
Prepare_StoredProcedureCall("addMovie")
With CommandMovie.Parameters
.AddWithValue("film_naam", film_naam)
.AddWithValue("film_status", 0)
.AddWithValue("film_hoofdrol", film_hoofdrol)
End With
CommandMovie.ExecuteNonQuery()
sqlTransaction.Commit()
bStatus = True
Catch ex As Exception
sqlTransaction.Rollback()
objLoggingService.WriteLine(strApplicationName, ex.Message)
Throw (ex)
End Try
Finish_StoredProcedureCall()
Return bStatus
End Function希望有人能帮我:)
发布于 2011-03-01 16:21:38
在您的代码中,当您传递命令存储过程时,您传递了3个参数,但是addMovie只接受2个参数。
发布于 2011-02-27 22:02:28
据我所知,您的问题是不调用CreateConnection并创建新的连接。在您的Prepare_StoredProcedureCall子中,可以执行以下操作:` CommandMovie =新SqlCommand(strStoredProcedure,conMovie) CommandMovie.CommandType = CommandType.StoredProcedure
adapMovie = New SqlDataAdapter(CommandMovie)
DataSetMovie = New DataSet()
conMovie.Open()‘问题是此时没有创建conMovie。你需要这样做:
CreateConnection
CommandMovie = New SqlCommand(strStoredProcedure, conMovie)
CommandMovie.CommandType = CommandType.StoredProcedure
adapMovie = New SqlDataAdapter(CommandMovie)
DataSetMovie = New DataSet()
conMovie.Open()编辑:我注意到您的.vb文件中没有这个特定类的.vb。这可能是问题所在吗?如果你已经搞清楚了,对不起我太晚了,帮不了你:)
https://stackoverflow.com/questions/5136239
复制相似问题