如何解决这个问题我使用Vb.Net [英] How To Solve This Problem I Use Vb.Net

查看:79
本文介绍了如何解决这个问题我使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆