为什么我得到错误“必须对标量@ ptr进行十分转换”我添加了所有值 [英] Why I am getting error "must decalre the scalar @ptr" I have added all values

查看:61
本文介绍了为什么我得到错误“必须对标量@ ptr进行十分转换”我添加了所有值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

公共bool add_employee(string [] ptr,int age)
{
// 0,1,2,3,4,5,6,7,8, 9,10,11
SqlCommand cmd;
string query =插入员工(First_Name,Last_Name,年龄,电子邮件,CNIC,电话号码,HouseAddress,省,Hiredate,城市,工资,SSN)值(@ptr [0],@ ptr [1] ,@年龄,@的ptr [3],@ PTR [4],@ PTR [5],@ PTR [6],@ PTR [7],@ PTR [8],@ PTR [9],@ PTR [10 ],@的ptr [2]);
cmd = new SqlCommand(query,conection);

// 0 1,2,3,4,5 6 7 8 9 10 11
//(First_Name,Last_Name,年龄,电子邮件,CNIC,电话号码,HouseAddress,省, Hiredate,city,Salary,SSN)
//(@ ptr [0],@ ptr [1],@ age,@ ptr [3],@ ptr [4],@ ptr [5],@ ptr [6],@ PTR [7],@ PTR [8],@ PTR [9],@ PTR [10],@ PTR [11]);
cmd.Parameters.AddWithValue(@ ptr [0],ptr [0]); // f name
cmd.Parameters.AddWithValue(@ ptr [1],ptr [1]); // l name
cmd.Parameters.AddWithValue(@ age,age); // age
cmd.Parameters.AddWithValue(@ ptr [3],ptr [3]); // email
cmd.Parameters.AddWithValue(@ ptr [4],ptr [ 4]); // cnic
cmd.Parameters.AddWithValue(@ ptr [5],ptr [5]); // phone
cmd.Parameters.AddWithValue(@ ptr [6] ,ptr [6]); //住宅地址
cmd.Parameters.AddWithValue(@ ptr [7],ptr [7]); //省
cmd.Parameters.AddWithValue( @ptr [8],ptr [8]); // date
cmd.Parameters.AddWithValue(@ ptr [9],ptr [9]); // city
cmd.Parameters .AddWithValue(@ ptr [10],ptr [10]); // salary
cmd.Parameters.AddWithValue(@ ptr [2],ptr [2]); // ssn



if(cmd.ExecuteNonQuery()== 1)
{
reader.Close();
返回true;
}
其他
{
reader.Close();
返回false;
}


}





我的尝试:



i搜索谷歌关于必须声明标量错误但我已删除但仍然收到错误

解决方案

使用@ ptr0等作为参数名称而不是@ptr [0]


不能在参数名称中放置方括号。这些保留用于包含空格或使用保留字作为名称的名称。


 public bool add_employee(string []ptr,int age)
        {                              
          //       0       ,  1     ,2  ,3    ,  4 ,   5  ,     6      , 7      ,  8     , 9 , 10   ,11 
            SqlCommand cmd;
string query = "insert into Employee (First_Name,Last_Name,Age,Email,CNIC,Phone#,HouseAddress,Province,Hiredate,city,Salary,SSN) values(@ptr[0],@ptr[1],@age,@ptr[3],@ptr[4],@ptr[5],@ptr[6],@ptr[7],@ptr[8],@ptr[9],@ptr[10],@ptr[2])";
            cmd = new SqlCommand(query,conection);
            
  //  0           1     ,2,  3   , 4  ,   5       6           7       8       9       10 11 
//(First_Name,Last_Name,Age,Email,CNIC,Phone#,HouseAddress,Province,Hiredate,city,Salary,SSN) 
//(@ptr[0],   @ptr[1], @age,@ptr[3],@ptr[4],@ptr[5],@ptr[6],@ptr[7],@ptr[8],@ptr[9],@ptr[10],@ptr[11]);
            cmd.Parameters.AddWithValue("@ptr[0]", ptr[0]); // f name
            cmd.Parameters.AddWithValue("@ptr[1]", ptr[1]);//l name
            cmd.Parameters.AddWithValue("@age", age);      //age
            cmd.Parameters.AddWithValue("@ptr[3]", ptr[3]);//email
            cmd.Parameters.AddWithValue("@ptr[4]", ptr[4]);//cnic
            cmd.Parameters.AddWithValue("@ptr[5]", ptr[5]);//phone
            cmd.Parameters.AddWithValue("@ptr[6]", ptr[6]);//house address
            cmd.Parameters.AddWithValue("@ptr[7]", ptr[7]);//province
            cmd.Parameters.AddWithValue("@ptr[8]", ptr[8]);//date
            cmd.Parameters.AddWithValue("@ptr[9]", ptr[9]);//city
            cmd.Parameters.AddWithValue("@ptr[10]", ptr[10]);//salary
            cmd.Parameters.AddWithValue("@ptr[2]", ptr[2]);//ssn


             
             if (cmd.ExecuteNonQuery() == 1)
          {
              reader.Close();
              return true;
          }
          else
          {
              reader.Close();
              return false;
          }
          

        }



What I have tried:

i searched on google about must declare scalar error but i have removed it but still getting error

解决方案

Use @ptr0 etc for the param names rather than @ptr[0]


You cannot put square brackets in parameter names. Those are reserved for names that have spaces in them or using a reserved word as a name.


这篇关于为什么我得到错误“必须对标量@ ptr进行十分转换”我添加了所有值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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