我有一些执行存储过程的代码,而后者只是运行INSERT + SELECT来反馈给调用数据适配器
Public Function mGetDataSet_Trans(ByVal aStrQuery As String, ByRef aObjDS As DataSet, ByVal aStrDSName As String, ByVal aCon As SqlConnection, ByRef aTrans As SqlTransaction) As Boolean
Dim pObjDataAdaptor As New SqlClient.SqlDataAdapter
mGetDataSet_Trans = False
Try
pObjDataAdaptor.SelectCommand = New SqlCommand(aStrQuery, aCon, aTrans)
pObjDataAdaptor.Fill(aObjDS, aStrDSName)
mGetDataSet_Trans = True
Catch SqlExp As SqlException
//do stuff
Throw SqlExp
End Try
End Function
没有什么太复杂的;创建一个数据适配器,给它一个命令和连接,填充一个通过引用传递的新数据集对象,如果有异常则回滚事务。
aStrQuery
基本上是这样的:
"EXECUTE USPSave
@FID='1090802',
@PID='4739933',
@aAType='4',
@aADate='6/1/2015 12:00:00 AM',
@aDiag1='ABC.12',
@aDiag2='ABC.12',
@aDiag3='ABC.12AB',
@aChangedBy='123'"
// SELECT ... FROM myTable WHERE FID = @FID
在USPSave
,@aDiagX
是VARCHAR(10)
,所以那里没有问题。更新的表还定义了VARCHAR(10)
字段,这也不应该是一个问题。
我完全不知道这个异常可能来自哪里,但是Fill
块中的TRY
调用抛出异常。有什么想法吗?
答案 0 :(得分:2)
没有太多事情可以继续,但这是一个猜测:
“字段为VARCHAR(10)”
“@ aADate ='6/1 / 2015 12:00:00 AM',”
我认为aADate字段太长而且你被告知它会被截断。