我只是使用存储过程在sqlserver数据库中插入记录。 在这段代码中,Binddata()是我将gridview与记录捆绑在一起的方法。
这是代码:
Private Sub btnadd_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnadd.Click
sqlSP = "INSERT_E_CLIENTMASTER_REC"
strConnection = _
ConfigurationManager.ConnectionStrings("connectstring").ConnectionString
Dim conn As New SqlConnection(strConnection)
conn.Open()
Dim cmd As New SqlCommand(sqlSP, conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(
New SqlParameter("@CLIENTCODE", SqlDbType.VarChar, 100, _
ParameterDirection.Input, False, 0, 0, "", _
DataRowVersion.Proposed, txtclientcode.Text))
'cmd.Parameters.Add( _
' New SqlParameter("@CLIENT_WEBXID", SqlDbType.NVarChar, _
' Convert.ToString(txtwebxid.Text))) _
cmd.Parameters.Add( _
New SqlParameter("@CLIENT_WEBXID", SqlDbType.VarChar, 100, _
ParameterDirection.Input, False, 0, 0, "", _
DataRowVersion.Proposed, txtwebxid.Text))
cmd.Parameters.Add( _
New SqlParameter("@ToEmail", SqlDbType.VarChar, 100, _
ParameterDirection.Input, False, 0, 0, "", _
DataRowVersion.Proposed, txttoemail.Text))
cmd.Parameters.Add( _
New SqlParameter("@ClientName", SqlDbType.VarChar, 100, _
ParameterDirection.Input, _
False, 0, 0, "", DataRowVersion.Proposed, txtclientname.Text))
cmd.Parameters.Add(_
New SqlParameter("@CcEmail", SqlDbType.VarChar, 100, _
ParameterDirection.Input, False, 0, 0, "", _
DataRowVersion.Proposed, txtccname.Text))
Dim i As Int32 = cmd.ExecuteNonQuery()
If (i < 0) Then
BindData()
MsgBox("Record Inserted successfully ", MsgBoxStyle.OkOnly)
txtclientcode.Text = ""
txtwebxid.Text = ""
txttoemail.Text = ""
txtclientname.Text = ""
txtccname.Text = ""
Else
MsgBox("Record Not Inserted successfully ", MsgBoxStyle.OkOnly)
End If
End Sub
在这段代码中,cmd.ExecuteNonQuery()返回-1,所以我给出了(i&lt; 0)条件实际上当行受到影响时它应该是正值。
提前致谢。
答案 0 :(得分:1)
记录是否已保存到数据库中?如果是这样,那是因为存储过程没有返回值。
用于UPDATE,INSERT和DELETE 语句,返回值是 受影响的行数 命令。当a上存在触发器时 正在插入或更新的表, 返回值包括数量 受插入或插入影响的行 更新操作和数量 受触发器影响的行或 触发。对于所有其他类型的 语句,返回值为-1。如果 发生回滚,返回值为 也-1。
如果需要从存储过程返回值,请查看此StackOverFlow Question
在旁注 - 请注意使用“USING Block”进行连接
答案 1 :(得分:0)
删除“SET NOCOUNT ON;”行来自你的SProc。
SET NOCOUNT(Transact-SQL): http://msdn.microsoft.com/en-us/library/ms189837.aspx