Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 存储过程ADO.NET错误_C#_Asp.net_Ado.net - Fatal编程技术网

C# 存储过程ADO.NET错误

C# 存储过程ADO.NET错误,c#,asp.net,ado.net,C#,Asp.net,Ado.net,您好,我有一个注册页面的存储过程,但我需要ADO.NET从各种文本框中获取值。 但是,我收到如下错误: “System.ArgumentException:不存在从对象类型System.Web.UI.WebControl.TextBox到已知托管提供程序本机类型的映射。” 然后我使用此格式添加控件中的值: cmd.Parameters.Add(new SqlParameter("@EmpID", SqlDbType.Int)); cmd.Parameters("@EmpID").Value =

您好,我有一个注册页面的存储过程,但我需要ADO.NET从各种文本框中获取值。 但是,我收到如下错误:

“System.ArgumentException:不存在从对象类型System.Web.UI.WebControl.TextBox到已知托管提供程序本机类型的映射。”

然后我使用此格式添加控件中的值:

cmd.Parameters.Add(new SqlParameter("@EmpID", SqlDbType.Int));
cmd.Parameters("@EmpID").Value = TextBox1.Text;
我在以下方面遇到错误:

Its showing errors for these kind of codes by appearing red line under 'Parameters'.

Non-invocable member 'System.Data.SqlClient.SqlCommand.Parameters' cannot be used like a method.

试试TextBox1。Text,TextBox是控件。Text属性保存字符串值

cmd.Parameters.Add(new SqlParameter("@EmpID", TextBox1.Text));
试试这个代码

try
{
  string empdb = @"Data Source=USER-PC\SQLEXPRESS;Initial Catalog=EmployeeDB;Integrated Security=True";
  using (var conn = new SqlConnection(connString))
  {
    using (var cmd = new SqlCommand("bridge_Type",conn))
    {           
        cmd.CommandType = CommandType.StoredProcedure;           
        cmd.Parameters.AddWithValue("@EmpID",TextBox1.Text);
        cmd.Parameters.AddWithValue("@Name", TextBox2.Text);    
        cmd.Parameters.AddWithValue("@Mob2", TextBox3.Text); 
        cmd.Parameters.AddWithValue("@Email", TextBox14.Text); 
        cmd.Parameters.AddWithValue("@EmpType",dropdown1.SelectedValue); 
        conn.Open();
        cmd.ExecuteNonQuery();           
    }
  }
}
catch(Exception ex)
{
   string msg = "Insert Error:"+ ex.Message;
   throw new Exception(msg);
}

确保正在转换为与存储过程中的参数类型相同的类型(例如:如果EmpID的参数类型为int,则可能需要将
TextBox1.Text
值转换为int。同时检查空值。

为什么不使用此格式

         cmd.Parameters.Add("@parameter", SqlDBType , size).value = TextBox1.Text

您好,很抱歉,这些都是打字错误。但是,我得到的错误更像这样-非invocable成员'System.Data.SqlClient.SqlCommand.Parameters'不能像方法一样使用。当我使用这些代码时,cmd.Parameters.Add(new SqlParameter(@EmpID),SqlDbType.Int));cmd.Parameters(@EmpID).Value=TextBox1.Text;您能在没有输入错误的情况下重新发布代码吗?事实上,您正在将System.Web.UI.WebControl.TextBox作为参数传递,这是不正确的,因为它无法转换为SQL提供程序可以理解的本机类型。根据您的代码,此异常非常合理。新错误是因为您使用了pArentesses,让C#认为你想用一个字符串参数调用一个名为“Parameters”的方法。你想用括号[]哦,很抱歉,我都认不出来了,谢谢你。但这对我来说有点棘手。现在出现了另一个错误—“无法将参数值从字符串转换为Int32。”:(Int32.Parse(TextBox1.Text),TextBox.Text是字符串,数据库中的列必须是int,因此Int32.Parse(string)方法将获取字符串并为您创建Int32。我仍然收到相同的错误。插入错误:未能将参数值从字符串转换为Int32。我使用了“convert.ToInt32(TextBox1.Text);”但是结果没有变化。EmpTYpe如何?它是什么类型?这就是混淆的地方-EmpTYpe是dbo.emp中的FK。在dbo.EmpTYpe中有一个“type”,它是PK。DropDown1值进入dbo.EmpTYpe表,然后是TypeID(自动生成)EmpType在dbo.emp中被更新为EmpType。这是我消除了对这个概念的怀疑的地方:但我认为这不是一个问题。这就是混淆的地方——EmpType在dbo.emp中是一个FK。在dbo.EmpType中有一个“Type”,它是一个PK。DropDown1值进入dbo.EmpType表,然后TypeID(自动生成)在dbo.emp中被更新为EmpType
         cmd.Parameters.Add("@parameter", SqlDBType , size).value = TextBox1.Text