您好,我试图创建将UserID
保存为Userdetails
类的登录表单。但是由于某种原因,登录无法正常工作。我认为if (login.Read())
的{{1}}中存在某个错误,但不确定。如果我将消息框放到validate_login
上不起作用,这就是为什么我在if (r.valid)
中的某个地方思考。任何形式的帮助都将受到欢迎。谢谢。
我尝试重写mysql查询(if (login.Read())
)
如果删除 cmd.CommandText =
,则会收到此错误System.NullReferenceException:'对象引用未设置为对象的实例。'
r为空。
if (r != null)
private void db_connection()
{
try
{
conn = "..connection string..";
connect = new MySqlConnection(conn);
connect.Open();
}
catch (MySqlException e)
{
throw;
}
}
private LoginUser validate_login(string user, string pass)
{
db_connection();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "Select * from table2 where username=@user and password=@pass";
cmd.Parameters.AddWithValue("@user", user);
cmd.Parameters.AddWithValue("@pass", pass);
cmd.Connection = connect;
LoginUser usr = null;
MySqlDataReader login = cmd.ExecuteReader();
if (login.Read())
{
usr = new LoginUser();
usr.UserID = login["UserID"].ToString();
usr.valid = true;
}
return usr;
}
private void button1_Click(object sender, EventArgs e)
{
{
string user = username.Text;
string pass = password.Text;
var r = validate_login(user, pass);
if (r != null)
{
if (r.valid)
{
MessageBox.Show("validated");
MySqlCommand cmd = new MySqlCommand();
MySqlDataReader reader = cmd.ExecuteReader();
Console.WriteLine(String.Format("{0}", r.UserID));
UserDetails.m_gnUserId = Convert.ToInt32(r.UserID);
}
}
}
}
的工作方式如下:validate_login
应该运行查询并搜索与文本框validate_login
和@user
相同的用户名和密码。
@pass
应该以{{1}}开始
注意:我知道我需要对数据库中的密码进行哈希处理,而我目前不需要。这是我的下一步。
答案 0 :(得分:0)
您的问题可能是因为如果数据库中没有这样的记录,您将返回null。
create procedure store_validated_sku_id
("variable_sku_id" VARCHAR2)
as
BEGIN
SELECT vsku.SKU_ID INTO store_validated_sku_id.variable_sku_id
FROM vs_sku_discont_details_test discontd,vsx_dcs_sku vsku,auto_ship_view bcc
where discontd.sku_id = vsku.JDA_SKU_ID
and bcc.sku_id = vsku.SKU_ID AND vsku.web_eligible = 1
and vsku.discontinued =0 and bcc.auto_ship_eligible is null;
END store_validated_sku_id;
/
如果这不是您想要的,则应返回有效字段设置为false的新LoginUser。
Error(5,1): PL/SQL: SQL Statement ignored
Error(5,49): PLS-00302: component 'VARIABLE_SKU_ID' must be declared
Error(5,65): PL/SQL: ORA-00904: : invalid identifier
请不要忘记在按钮的事件处理程序中进行检查。