如何解决这个问题我使用Vb.Net [英] How To Solve This Problem I Use Vb.Net
本文介绍了如何解决这个问题我使用Vb.Net的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
程序或功能'Sp_store @ Energiaa'期望参数'@ddl_Value2'未提供。
我的StoredProcedures
ALTER proc Sp_store @ Energiaa
(
@ Value2 varchar ( 50 ),
@ Value3 varchar ( 50 ),
@ Value4 < span class =code-keyword> varchar ( 50 ),
@ Value5 varchar ( 50 ),
@ Value6 varchar ( 50 ),
@val ue7 datetime
)
as
开始
插入 进入 dbo.test1 (Value2,Value3,Value4,Value5,Value6,Value7)
值( @ ddl_Value2 , @ txt_Value3 , @ txt_Value4 , @ txt_Value5 , @ txt_Value6 , @ DateTimePicker_Value7 )
end
我的代码
私人 Sub btn_Save_Click(< span class =code-keyword> ByVal sender As System。 Object , ByVal e As System.EventArgs) Handles btn_Save.Click
如果(ddl_Value2.Text = )然后
Savevalidation()
其他
Dim cmd < span class =code-keyword>作为 新 SqlCommand
Dim str 作为 字符串
Dim 计数作为 整数
尝试
gl_Con = < span class =code-keyword>新 SqlConnection( server = HARIOM; Initial Catalog = vbtest; Integrated Security = True)
Dim mycommand As SqlClient .SqlCommand = 新 SqlClient.SqlCommand()
mycommand.Connection = gl_Con
str = 执行sp_insert @ test1
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add( @ Value2,SqlDbType.VarChar, 50 ) .Value = ddl_Value2.Text
cmd.Parameters.Add( @ Value3,SqlDbType .VarChar, 50 )。Value = txt_Value3.Text
cmd.Parameters.Add( @ Value4,SqlDbType.VarChar, 50 )。Value = txt_Value4.Text
cmd.Parameters.Add( @ Value5,SqlDbType.VarChar, 50 )。Value = txt_Value5.Text
cmd.Parameters.Add( @ Value6,SqlDbType.VarChar, 50 )。Value = txt_Value6.Text
cmd.Parameters.Add( @ Value7,SqlDbType.DateTime).Value = DateTimePicker_Value7.Text
gl_Con.Open()
cmd = 新 SqlCommand (str,gl_Con)
cmd.ExecuteNonQuery()
Catch ex As System.Data.SqlClient.SqlException
MsgBox(ex.Message)
结束 尝试
gl_Con.Close()
结束 如果
结束 Sub
解决方案
在您的SP中更改您的插入sql语句,如下所示
< pre lang =SQL> insert 到 dbo.test1(Value2,Value3,Value4,Value5,Value6) ,Value7)
值( @ Value2 , @ Value3 , @ Value4 , @ Value5 , @ Value6 , @ Value7 )
使存储过程参数名称与insert语句参数名称相同。而且你有两个命令和执行命令,你没有添加任何参数。执行以下操作
gl_Con =新的SqlConnection( server = HARIOM; Initial Catalog = vbtest; Integrated Security = True)
cmd =新的SqlCommand( Sp_store @ Energiaa,gl_Con)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add( < span class =code-string> @ Value2,SqlDbType.VarChar, 50 )。Value = ddl_Value2.Text
cmd.Parameters .Add( @ Value3,SqlDbType.VarChar, 50 )。Value = txt_Value3.Text
cmd.Parameters.Add( @ Value4 ,SqlDbType.VarChar, 50 )。Value = txt_Value4.Text
cmd.Parameters.Add( @ Value5 ,SqlDbType.VarChar, 50 )。Value = txt_Value5.Text
cmd.Parameters.Add( @ Value6,SqlDbType.VarChar, 50 )。Value = txt_Value6.Text
cmd.Parameters.Add( @ Value7,SqlDbType.DateTime).Value = DateTimePicker_Value7.Value
gl_Con.Open()
cmd.ExecuteNonQuery()
我假设ddl_Value2是一个组合框。若是这样尝试此代码。
ddl_Value2.SelectedItem.ToString()
要添加到DamithSL的更正,不要使用Text属性向SQL发送日期,即使作为参数 - 它们也可以被误解,因为这两个系统可以不同地将12/03/11作为date。
相反,通过DateTime值发送,这是明确的:
cmd.Parameters.Add( @ Value7,SqlDbType.DateTime).Value = DateTimePicker_Value7.Value
Procedure or Function 'Sp_store@Energiaa' expects Parameter '@ddl_Value2' which was not Supplied.
my StoredProcedures
ALTER proc Sp_store@Energiaa
(
@Value2 varchar(50),
@Value3 varchar(50),
@Value4 varchar(50),
@Value5 varchar(50),
@Value6 varchar(50),
@Value7 datetime
)
as
begin
insert into dbo.test1 (Value2,Value3,Value4,Value5,Value6,Value7)
values (@ddl_Value2,@txt_Value3,@txt_Value4,@txt_Value5,@txt_Value6,@DateTimePicker_Value7)
end
my Code
Private Sub btn_Save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Save.Click
If (ddl_Value2.Text = "") Then
Savevalidation()
Else
Dim cmd As New SqlCommand
Dim str As String
Dim count As Integer
Try
gl_Con = New SqlConnection("server=HARIOM;Initial Catalog=vbtest;Integrated Security=True")
Dim mycommand As SqlClient.SqlCommand = New SqlClient.SqlCommand()
mycommand.Connection = gl_Con
str = "execute sp_insert@test1"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@Value2", SqlDbType.VarChar, 50).Value = ddl_Value2.Text
cmd.Parameters.Add("@Value3", SqlDbType.VarChar, 50).Value = txt_Value3.Text
cmd.Parameters.Add("@Value4", SqlDbType.VarChar, 50).Value = txt_Value4.Text
cmd.Parameters.Add("@Value5", SqlDbType.VarChar, 50).Value = txt_Value5.Text
cmd.Parameters.Add("@Value6", SqlDbType.VarChar, 50).Value = txt_Value6.Text
cmd.Parameters.Add("@Value7", SqlDbType.DateTime).Value = DateTimePicker_Value7.Text
gl_Con.Open()
cmd = New SqlCommand(str, gl_Con)
cmd.ExecuteNonQuery()
Catch ex As System.Data.SqlClient.SqlException
MsgBox(ex.Message)
End Try
gl_Con.Close()
End If
End Sub
解决方案
change your insert sql statment in your SP as below
insert into dbo.test1 (Value2,Value3,Value4,Value5,Value6,Value7) values (@Value2,@Value3,@Value4,@Value5,@Value6,@Value7)
makesure that stored procedure parameter names same as insert statement parameter names. And also you having two commands and executing command which you haven't add any parameter to it. do as below
gl_Con = New SqlConnection("server=HARIOM;Initial Catalog=vbtest;Integrated Security=True") cmd =New SqlCommand("Sp_store@Energiaa", gl_Con) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@Value2", SqlDbType.VarChar, 50).Value = ddl_Value2.Text cmd.Parameters.Add("@Value3", SqlDbType.VarChar, 50).Value = txt_Value3.Text cmd.Parameters.Add("@Value4", SqlDbType.VarChar, 50).Value = txt_Value4.Text cmd.Parameters.Add("@Value5", SqlDbType.VarChar, 50).Value = txt_Value5.Text cmd.Parameters.Add("@Value6", SqlDbType.VarChar, 50).Value = txt_Value6.Text cmd.Parameters.Add("@Value7", SqlDbType.DateTime).Value = DateTimePicker_Value7.Value gl_Con.Open() cmd.ExecuteNonQuery()
I am assuming ddl_Value2 is a combobox. if so try this code.
ddl_Value2.SelectedItem.ToString()
To add to DamithSL's correction, don't use Text properties to send dates to SQL, even as a parameter - they are open to misinterpretation, as the two systems can intpret "12/03/11" differently as a date.
Instead, send through the DateTime value, which is unambiguous:
cmd.Parameters.Add("@Value7", SqlDbType.DateTime).Value = DateTimePicker_Value7.Value
这篇关于如何解决这个问题我使用Vb.Net的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文