存储过程为:
CREATE PROCEDURE Get
@userName varchar
 AS
select * from T_UserInfo
where  @userName = UserName
GO------------------------------------
表 T_UserInfo
UserName  UserPWD
  a          a
  asd        asd
-------------------------------------代码:
public static void Main()
{
string userName = "asd";
string strConn = "server=(local);database=BookManagerSystem;Trusted_Connection=yes;"; SqlConnection conn = new SqlConnection(strConn);
SqlCommand comm = new SqlCommand("Get", conn);
comm.CommandType = CommandType.StoredProcedure;
try
{
conn.Open(); comm.Parameters.Add("@userName", SqlDbType.NVarChar); SqlDataReader reader = comm.ExecuteReader();
while(reader.Read())
{
Console.WriteLine(reader["UserName"]);
Console.WriteLine(reader["UserPWD"]);
}
} catch(Exception ex)
{
Console.WriteLine( ex);
}
finally
{
conn.Close();
}
Console.ReadLine(); }
--------------------------------------------------运行结果
a
a
---------------------------------------------------为什么输入的asd,却返回a的内容?哪里有问题?

解决方案 »

  1.   

    把comm.Parameters.Add("@userName", SqlDbType.NVarChar);改为
    comm.Parameters.Add("@userName", SqlDbType.NVarChar).Value = userName;
      

  2.   

    你看看你的代码,哪里输入asd了呢?只是给字符串赋了值,但是根本没有给SQL的参数赋值啊
      

  3.   


    comm.Parameters.Add("@userName", SqlDbType.NVarChar);
    改成
    SqlParameter para=new SqlParameter("@userName",SqlDbType.NVarChar);
    para.Value=userName;
    comm.Parameters.Add(para);
      

  4.   

    代码如下:
    using System;
    using System.Data;
    using System.Data.SqlClient;class A
    {
    public static void Main()
    {
    string userName = "asd";
    string strConn = "server=(local);database=BookManagerSystem;Trusted_Connection=yes;"; SqlConnection conn = new SqlConnection(strConn);
    SqlCommand comm = new SqlCommand("Get", conn);
    comm.CommandType = CommandType.StoredProcedure;
    try
    {
    conn.Open(); comm.Parameters.Add("@userName", SqlDbType.NVarChar);
    comm.Parameters["@userName"].Value = userName; SqlDataReader reader = comm.ExecuteReader();
    while(reader.Read())
    {
    Console.WriteLine(reader["UserName"]);
    Console.WriteLine(reader["UserID"]);
    Console.WriteLine(reader["UserPWD"]);
    Console.WriteLine(reader["UserPop"]);
    }
    } catch(Exception ex)
    {
    Console.WriteLine( ex);
    }
    finally
    {
    conn.Close();
    }
    Console.ReadLine(); }
    }
      

  5.   

    代码如下:
    using System;
    using System.Data;
    using System.Data.SqlClient;class A
    {
    public static void Main()
    {
    string userName = "aa";
    string strConn = "server=(local);database=BookManagerSystem;Trusted_Connection=yes;"; SqlConnection conn = new SqlConnection(strConn);
    SqlCommand comm = new SqlCommand("Get", conn);
    comm.CommandType = CommandType.StoredProcedure;
    try
    {
    conn.Open(); comm.Parameters.Add("@userName", SqlDbType.NVarChar);
    comm.Parameters["@userName"].Value = userName;//这里赋值 SqlDataReader reader = comm.ExecuteReader();
    while(reader.Read())
    {
    Console.WriteLine(reader["UserName"]);
    Console.WriteLine(reader["UserID"]);
    Console.WriteLine(reader["UserPWD"]);
    Console.WriteLine(reader["UserPop"]);
    }
    } catch(Exception ex)
    {
    Console.WriteLine( ex);
    }
    finally
    {
    conn.Close();
    }
    Console.ReadLine(); }
    }
    结果一样
      

  6.   

    看起来好象没有错~~你把表改为
    T_UserInfo
    UserName  UserPWD
      bb         bb
      asd        asd
    -------------------------------------
    看运行的结果是什么~
      

  7.   

    如果只有这两条数据结果正确!但是
    T_UserInfo  
    UserName    UserPWD  
       b                   c
       bb                  bb  
       asd                asd 输入bb,他会出现c,而不是bb
      

  8.   

    那你试下这样:存储过程为:
    CREATE PROCEDURE Get
    @userName varchar   --->这个改为:@userName nvarchar(100)
     AS
    代码:
    comm.Parameters.Add("@userName", SqlDbType.NVarChar);
    这个改为:comm.Parameters.Add("@userName", SqlDbType.NVarChar,100);试使看