C# 无法从存储过程中获取某些值

C# 无法从存储过程中获取某些值,c#,sql-server,c#-4.0,C#,Sql Server,C# 4.0,我输入用户名&我想得到所有的细节作为输出 $strSQLUSER="SELECT * FROM User WHERE username='".addslashes($MessageArray[0])."' AND state!='1' AND state!='4'"; $result_user=odbc_exec($conn,$strSQLUSER) or die("Could not connect to database"); $huntername = stripslashes(

我输入用户名&我想得到所有的细节作为输出

$strSQLUSER="SELECT * FROM User WHERE username='".addslashes($MessageArray[0])."' AND state!='1' AND state!='4'";

$result_user=odbc_exec($conn,$strSQLUSER) or die("Could not connect to database");


$huntername   = stripslashes(odbc_result($result_user,"name"));
$huntlicense = stripslashes(odbc_result($result_user,"license"));
然后我使用我的.net编码来实现这一点

 private void MooseSeenInput(string MobileNo, string Date, string odd, params Array[] msg_arr)
    {

        controller = new UnitsController();

        DataSet ds = controller.GetUserDetails(username);
        if (ds.Tables[0].Rows.Count > 0)
        {
            //get username & License
            string user=ds.Tables[0].Rows[0]["name"].ToString();
            string license= ds.Tables[0].Rows[0]["license"].ToString();
        }
然后我为这个写了存储过程。。。但我不适合做这个手术

ALTER PROCEDURE dbo.

 @UserName varchar(50),
 @License  varchar(50) OUTPUT
 AS
 BEGIN

 Select * FROM
 Users
Where UserName = @UserName & State ='1' & State= '4'

END
-执行官获取详细信息

此外,这里我还添加了sqldataprovider部分

 public override DataSet GetSMSUserDetails(string UserName)
    {
        return SqlHelper.ExecuteDataset(ViltraConnectionString, GetFullyQualifiedName("GetSMSUserDetails_SP"),UserName);
    }
     #endregion SMS
对于sql server中的字符串concat,请使用和,而不是&

从SP中删除Out参数,因为您正在返回记录

ALTER PROCEDURE dbo.GetSMSUserDetails_SP

 @UserName varchar(50)
 AS
 BEGIN

     Select * FROM
     Users
    Where UserName = @UserName and State Not IN ('1' ,'4')

END
具有输出参数的SP

   ALTER PROCEDURE dbo.Getsmsuserdetails_sp @UserName varchar(50), 
                                         @License  varchar(50) output,
                                         @name  varchar(50) output
AS 
  BEGIN 
      SELECT TOP 1 @License = License, @name = name 
      FROM   Users 
      WHERE  UserName = @UserName 
             AND State NOT IN ( '1', '4' ) 
  END 
对于sql server中的字符串concat,请使用和,而不是&

从SP中删除Out参数,因为您正在返回记录

ALTER PROCEDURE dbo.GetSMSUserDetails_SP

 @UserName varchar(50)
 AS
 BEGIN

     Select * FROM
     Users
    Where UserName = @UserName and State Not IN ('1' ,'4')

END
具有输出参数的SP

   ALTER PROCEDURE dbo.Getsmsuserdetails_sp @UserName varchar(50), 
                                         @License  varchar(50) output,
                                         @name  varchar(50) output
AS 
  BEGIN 
      SELECT TOP 1 @License = License, @name = name 
      FROM   Users 
      WHERE  UserName = @UserName 
             AND State NOT IN ( '1', '4' ) 
  END 

您不希望查询是

而不是在“1”、“4”中陈述?从那时起,您就使用了!='你发布的第一个代码是1


还考虑只返回需要的字段,而不使用返回所有字段的“select *”。

< p>难道你不想查询为

而不是在“1”、“4”中陈述?从那时起,您就使用了!='你发布的第一个代码是1



还考虑只返回需要的字段,而不使用返回所有字段的“SELECT*”。

这是正确的吗?用户名varchar50,@License varchar50 OUTPUT>>在用户名中,也在签名处。我将用户名作为参数。如果您想要一个单列输出,请使用输出参数,否则只需使用,正如我所提到的。我在我的原始帖子中添加了一些编码。请看,我想从用户表中传递UserName&getalldetails select*,无论状态是否为不等于1和4。在结果之后,我想将用户名和许可证号分配给其他变量。我的编码方式正确吗?这一次正确吗?用户名varchar50,@License varchar50 OUTPUT>>在用户名中,也在签名处。我将用户名作为参数。如果您想要一个单列输出,请使用输出参数,否则只需使用,正如我所提到的。我在我的原始帖子中添加了一些编码。请看,我想从用户表中传递UserName&getalldetails select*,无论状态是否为不等于1和4。在结果之后,我想将用户名和许可证号分配给其他变量。。我的编码方式正确吗?我想将用户名和GetAllDetails从Users表中选择*以确定状态是否不等于1和4。在结果之后,我想将用户名和许可证号分配给其他变量。。我的编码方式正确?Romil已将其代码编辑为now IN,这应该可以。我想从Users表中传递UserName&GetAllDetails Select*以确定状态是否不等于1和4。结果出来后,我想将UserName&license No分配给其他变量。我的编码方式正确吗?Romil已将其代码编辑为now IN,这应该行得通。PHP的AddSlashes不会保护您不受SQL注入的影响-请参见示例。在这里,我将PHP转换为CTThat's罚款,仅供将来参考:-PHP的AddSlashes不会保护您不受SQL注入的影响-请参见示例。在这里,我将PHP转换为CTThat's罚款,仅供将来参考:-