从商店程序中获取一些价值不能

时间:2012-06-12 07:44:56

标签: c# sql-server c#-4.0

我输入了用户名&我希望得到所有细节作为输出。首先我用PHP代码向您展示,

$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

- exec GetSMSUserDetails_SP

此外,我添加了sqldataprovider部分

 public override DataSet GetSMSUserDetails(string UserName)
    {
        return SqlHelper.ExecuteDataset(ViltraConnectionString, GetFullyQualifiedName("GetSMSUserDetails_SP"),UserName);
    }
     #endregion SMS

2 个答案:

答案 0 :(得分:2)

在sql server中使用And代替&进行字符串连接。

从SP中删除Out Parameter,因为您要返回记录。

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 :(得分:1)

您不希望查询为..

AND州 IN('1','4')?既然你在你发布的第一个代码中使用了!='1'吗?

另外,请考虑仅返回您需要的字段,而不是使用返回所有字段的“ SELECT * ”。