日期:2014-05-17  浏览次数:20418 次

小弟刚学ADO.NET,进来问个问题
主要是关于一个小程序,验证数据库的密码和用户输入的密码是否匹配,如果匹配则输出登陆成功,如果不匹配,则输出登陆密码错误,如果查无此用户名信息,则输出用户名不存在。
C#代码如下:
C# code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string dataDir = AppDomain.CurrentDomain.BaseDirectory;
            if (dataDir.EndsWith(@"\bin\Debug\")
                || dataDir.EndsWith(@"\bin\Release\"))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
                AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
            }
            Console.WriteLine("请输入用户名:");
            string username = Console.ReadLine();
            Console.WriteLine("请输入要插入的密码:");
            string password = Console.ReadLine();
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True;"))
            {
                conn.Open();
                Console.WriteLine("Open SQLServer Success!");
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from T_Users where UserName='" + username + "'";
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        if (reader.Read())
                        {
                            //用户名存在
                            string dbpassword = reader.GetString(reader.GetOrdinal("Password"));
                            Console.WriteLine(dbpassword);
                            Console.WriteLine(password);
                            if(dbpassword == password)
                            {
                                Console.WriteLine("登陆成功!");
                            }else
                            {
                                Console.WriteLine("密码错误!");
                            }
                        }
                        else
                        {
                            Console.WriteLine("用户不存在");
                        }
                    }
                    Console.WriteLine("Success!");
                }
            }
            Console.ReadKey();
        }
    }
}


然后,由于数据库文件是mdf,故将整个项目打包成了rar,希望有人帮忙看看问题出在哪儿。

项目下载地址

注:项目版本是VS2010版的,SQLServer版本是2008SP3

主要问题是:输入正确的密码都输出密码错误,不知道为什么是这样。

求高人解答

------解决方案--------------------
是不是你的数据库“密码”字段设了char型了,要设成varchar型。char型会自动填充空格的。