我是初学者,希望使用C#.net - Web应用程序实现基本登录页面。我已经成功创建了数据库,并且可以测试连接是否正常。当控件命中ExecuteReader()命令时,我收到以下错误消息。
类型' System.Data.SqlClient.SqlException'的异常发生在 System.Data.dll但未在用户代码中处理
其他信息:无效的对象名称' UserDB'。
string LoginDbCS =ConfigurationManager.ConnectionStrings["UserDB"].ConnectionString;
string ID = TextBoxUserId.Text;
SqlConnection Conn = new SqlConnection(LoginDbCS);
{
string sCmdStr = "select Password from UserDB where UserID=@ID";
SqlCommand sCmd = new SqlCommand(sCmdStr, Conn);
SqlParameter param = new SqlParameter();
param.ParameterName = "@ID";
param.Value = TextBoxUserId.Text;
sCmd.Parameters.Add(param);
Conn.Open();
SqlDataReader sReader = sCmd.ExecuteReader();
sReader.Read();
if ((string)sReader["Password"]==TextBoxPassword.Text)
{
Label5.Text = "Login Successful";
}
else
{
Label5.Text = "No Records found";
}
sReader.Close();
Conn.Close();
}
}
期待有关修复此崩溃的建议。
答案 0 :(得分:2)
嗯,sohaiby在评论中回答了您的问题,但您的代码存在一些更深层次的问题,您应该解决这些问题。
我相信作为一个初学者,然后作为有不良编码标准经验的人,学习良好的编码标准会更容易,因为当事情变坏时,人们经常会去熟悉的东西。
所以,这里有一些不好的做法,你应该取代A.S.A.P:
string sCmdStr = "select * from UserDB where UserID=@ID AND Password = @Password";
ExecuteScalar
从数据库中获取单个值
如果查询未返回任何结果,则ExecuteScalar
将返回null。 read how to handle this here.。Using
声明的情况下使用IDisposable(在您的情况下为SqlConnection
)。 我希望这有助于您学习更好的编码标准并提高编码技能。
快乐编程!