在使用
object datasource
连接数据库进行
CRUD
时
,
希望回传影响行数。
不论是用
object datasource
的
Insert()
或是
Delete()
还是抓取
e.AffectedRows
都是
-1,
但是数据库中的数据却正常的被删除或新增
。
Dim conn As New SqlConnection(ConnString)
Dim cmd As SqlCommand
Dim strInsertSQL As String
Dim intAffected As Integer = 0
Dim cmd As SqlCommand
Dim strInsertSQL As String
Dim intAffected As Integer = 0
'Insert Command
strInsertSQL = "INSERT INTO sys_symbol(type_id, symbol_id, symbol_name, symbol_value) "
strInsertSQL &= "VALUES (@type_id, @symbol_id, @symbol_name, @symbol_value) "
strInsertSQL = "INSERT INTO sys_symbol(type_id, symbol_id, symbol_name, symbol_value) "
strInsertSQL &= "VALUES (@type_id, @symbol_id, @symbol_name, @symbol_value) "
'Insert Parameters
cmd = New SqlCommand(strInsertSQL, conn)
cmd.Parameters.Add("@type_id", SqlDbType.VarChar, 10).Value = type_id
cmd.Parameters.Add("@symbol_id", SqlDbType.VarChar, 10).Value = symbol_id
cmd.Parameters.Add("@symbol_name", SqlDbType.VarChar, 255).Value = symbol_name
cmd.Parameters.Add("@symbol_value", SqlDbType.VarChar, 30).Value = symbol_value
cmd = New SqlCommand(strInsertSQL, conn)
cmd.Parameters.Add("@type_id", SqlDbType.VarChar, 10).Value = type_id
cmd.Parameters.Add("@symbol_id", SqlDbType.VarChar, 10).Value = symbol_id
cmd.Parameters.Add("@symbol_name", SqlDbType.VarChar, 255).Value = symbol_name
cmd.Parameters.Add("@symbol_value", SqlDbType.VarChar, 30).Value = symbol_value
Try
If conn.State <> ConnectionState.Open Then conn.Open()
intAffected = cmd.ExecuteNonQuery()
Catch exSQL As SqlException
My.Log.WriteException(exSQL)
Catch ex As Exception
My.Log.WriteException(ex)
Finally
cmd.Dispose()
conn.Close()
conn.Dispose()
End Try
If conn.State <> ConnectionState.Open Then conn.Open()
intAffected = cmd.ExecuteNonQuery()
Catch exSQL As SqlException
My.Log.WriteException(exSQL)
Catch ex As Exception
My.Log.WriteException(ex)
Finally
cmd.Dispose()
conn.Close()
conn.Dispose()
End Try
Return intAffected
朋友们如碰到以上问题
以下步骤可以轻松解决——
在ObjectDataSource的Inserted、Updated和Deleted事件中,加入
e.AffectedRows = e.ReturnValue
就可以在使用ObjectDataSource.Insert()后取得影响行数。