VB.NEt WinForm调用存储过程却执行不成功!请高手帮忙,谢谢!

于之 2011-08-11 08:12:39
VB.NEt WinForm调用存储过程却执行不成功!请高手帮忙,谢谢!

我的VB.NET代码如下:


Dim Conn As SqlConnection
Dim strcon As String = My.Settings.ConnectionString
Conn = New SqlConnection(strcon)
Dim strSQL As String = "getstype" '--调用存储过程

Dim cmd As New SqlCommand(strSQL, Conn)
cmd.CommandType = CommandType.StoredProcedure

Dim n1 As String
Dim i As Integer
For i = 0 To DataGridView1.Rows.Count - 1
n1 = DataGridView1.Rows(i).Cells("stype").Value.ToString
'MsgBox(n1) '--调试时可以正常取到datagridview中的stype列值

cmd.Parameters.Add(New SqlParameter("@stype", SqlDbType.NVarChar, 6))
cmd.Parameters("@stype").Value = DataGridView1.Rows(i).Cells("stype").Value.ToString

Next
cmd.Dispose()
Conn.Close()
Conn.Dispose()


明明 datagridview1中的stype列一起有5行数据,但是,为何没有插入sql数据库表中呢?

我的存储过程如下:


USE [DataTb]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE Procedure [dbo].[getstype]
(
@stype as varchar(6)
)
AS
begin

insert into M_type(stype) values(@stype)

end



请高手指点,为何循环datagridview中的列值。却不执行存储过程的插入语句呢? 即插入没成功!请高手指教,谢谢!
...全文
67 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnwin 2011-08-12
  • 打赏
  • 举报
回复
这不明摆着吗?,你哪里打开Conn了?少了Conn.Open()
于之 2011-08-12
  • 打赏
  • 举报
回复
加在里面一样也不行,罪魁祸首是

cmd.ExecuteNonQuery()

错误仍为:
ExecuteNonQuery 要求已打开且可用的连接。连接的当前状态为已关闭。

于之 2011-08-12
  • 打赏
  • 举报
回复
那我上面错在哪里呢?
lhblxm 2011-08-11
  • 打赏
  • 举报
回复

Dim Conn As SqlConnection
Dim strcon As String = My.Settings.ConnectionString
Conn = New SqlConnection(strcon)
Dim strSQL As String = "getstype" '--调用存储过程
Dim i As Integer
For i = 0 To DataGridView1.Rows.Count - 1 ,这个要放在前面
Dim cmd As New SqlCommand(strSQL, Conn)
cmd.CommandType = CommandType.StoredProcedure

Dim n1 As String

n1 = DataGridView1.Rows(i).Cells("stype").Value.ToString
'MsgBox(n1) '--调试时可以正常取到datagridview中的stype列值

cmd.Parameters.Add(New SqlParameter("@stype", SqlDbType.NVarChar, 6))
cmd.Parameters("@stype").Value = DataGridView1.Rows(i).Cells("stype").Value.ToString
cmd.ExecuteNonQuery()
Next






楼主的意思是要插入多个值,应该多次使用命令

于之 2011-08-11
  • 打赏
  • 举报
回复
我在vb.NET的一个按钮中执行。

我加上 cmd.ExecuteNonQuery() 老是会提示:
ExecuteNonQuery 要求已打开且可用的连接。连接的当前状态为已关闭。

这个错误啊!

请再指点,谢谢!
ustbwuyi 2011-08-11
  • 打赏
  • 举报
回复
你在哪执行的?上面的代码只是给存储过程赋值了,并没有执行这个SqlCommand,当然不会执行了。

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧