主要是关于一个小程序,验证数据库的密码和用户输入的密码是否匹配,如果匹配则输出登陆成功,如果不匹配,则输出登陆密码错误,如果查无此用户名信息,则输出用户名不存在。
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型会自动填充空格的。