回 帖 发 新 帖 刷新版面

主题:郁闷一天咯,回答给高分!(关于SQL的)

存储过程为:
CREATE PROCEDURE Get
    @userName varchar
AS
    select * from T_UserInfo
        where  @userName = UserName
GO

------------------------------------
表 T_UserInfo
UserName  UserPWD
  a          a
  asd        asd
-------------------------------------

代码:
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();

    }
}
--------------------------------------------------

运行结果
a
a
---------------------------------------------------

为什么输入的asd,却返回a的内容?哪里有问题?

回复列表 (共3个回复)

沙发

comm.Parameters没有赋值

板凳

我多删了一行,现在改过来了,附值后结果一样

3 楼

当然返回a值,你写的程序执行顺序都有问题,当程序读取表时先是连接,然后执行存储过程,执行try得到参数后,但是此时你并没有把输入的参数初始化,而它默认读取第一行时,你在后面再输入参数,此时没有catch到错误执行finally,关闭了连接,你不妨试试把输入参数放在前面

我来回复

您尚未登录,请登录后再回复。点此登录或注册