ASP.NET C#验证用户名和密码
我正在尝试从MySql服务器验证用户名和密码。登录验证正在工作,但我一辈子都不明白为什么“创建新用户”验证不起作用 以下是注册新用户的代码。发生的事情是ASP.NET C#验证用户名和密码,c#,mysql,asp.net,validation,C#,Mysql,Asp.net,Validation,我正在尝试从MySql服务器验证用户名和密码。登录验证正在工作,但我一辈子都不明白为什么“创建新用户”验证不起作用 以下是注册新用户的代码。发生的事情是 catch (Exception) { Label1.Text = "Brukernavnet er allerede i bruk"; } 似乎这一部分在某种程度上毁了我,每当我测试运行这段代码时,我都会收到这条消息 protected void newBtn_Click(object sender, Ev
catch (Exception)
{
Label1.Text = "Brukernavnet er allerede i bruk";
}
似乎这一部分在某种程度上毁了我,每当我测试运行这段代码时,我都会收到这条消息
protected void newBtn_Click(object sender, EventArgs e)
{
String cs = "Database=trafikkskole; User=user; Password=password";
MySqlConnection dbconnect = new MySqlConnection(cs);
try
{
dbconnect.Open();
cmd.CommandText = "INSERT INTO user (username, password) VALUES (@un, @pw)";
cmd.Parameters.AddWithValue("@un", inputUser.Text);
cmd.Parameters.AddWithValue("@pw", inputPw.Text);
cmd.Connection = dbconnect;
int a = cmd.ExecuteNonQuery();
if (a > 0)
{
Label1.Text = "Gratulerer! Du har nå laget en bruker!";
}
else
{
Label1.Text = "ERROR";
}
}
catch (Exception)
{
Label1.Text = "Brukernavnet er allerede i bruk";
}
finally
{
dbconnect.Close();
}
}
}
编辑:
如果我这样尝试:
protected void newBtn_Click(object sender, EventArgs e)
{
String cs = "Database=trafikkskole; User=root; Password=root";
MySqlConnection dbconnect = new MySqlConnection(cs);
String sql = "SELECT * FROM user";
MySqlCommand cmd = new MySqlCommand(sql, dbconnect);
da = new MySqlDataAdapter(cmd);
MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
ds = new DataSet("TEST");
da.Fill(ds, "user");
Response.Write(ds.Tables["user"].Rows.Count);
try
{
dbconnect.Open();
cmd.CommandText = "INSERT INTO user (username, password) VALUES (@un, @pw)";
cmd.Parameters.AddWithValue("@un", inputUser.Text);
cmd.Parameters.AddWithValue("@pw", inputPw.Text);
cmd.Connection = dbconnect;
int a = cmd.ExecuteNonQuery();
if (a > 0)
{
Label1.Text = "Gratulerer! Du har nå laget en bruker!";
}
else
{
Label1.Text = "ERROR";
}
}
catch (Exception Exception)
{
Label1.Text = "Brukernavnet er allerede i bruk";
}
finally
{
dbconnect.Close();
}
}
}
这最终可能导致用户没有用户名或密码。可能会出现很多问题。您应该检查exception.message以了解它可能是什么 例如,在catch语句中放置一个断点,并查看是否为以下情况引发异常。。。用户名是否已存在且SQL正在抛出错误。。。或者用户名/密码是否为空、太长等
无论如何,请将catch语句更改为catch(Exception Exception),然后查看异常是什么。我要感谢大家的尝试,找到了一个有效的解决方案,将在此处发布,以供将来参考
protected void newBtn_Click(object sender, EventArgs e)
{
String cs = "Database=trafikkskole; User=root; Password=root";
MySqlConnection dbconnect = new MySqlConnection(cs);
try
{
if (!string.IsNullOrWhiteSpace(inputUser.Text) && !string.IsNullOrWhiteSpace(inputPw.Text))
{
dbconnect.Open();
Label1.Text = "Gratulerer! Du har nå laget en bruker!";
string qry = "INSERT INTO user(username, password) VALUES (@un, @pw)";
cmd = new MySqlCommand(qry, dbconnect);
cmd.Parameters.AddWithValue("@un", inputUser.Text);
cmd.Parameters.AddWithValue("@pw", inputPw.Text);
cmd.Connection = dbconnect;
cmd.ExecuteNonQuery();
}
else
{
Label1.Text = "ERROR";
}
}
catch (Exception)
{
Label1.Text = "Brukernavnet er allerede i bruk";
}
finally
{
dbconnect.Close();
}
}
你能用你的异常日志编辑吗。例如
catch(Exception ex){Debug.Writeline(ex.ToString());}
如果您试图捕获插入的结果,而不是将int a=cmd.ExecuteNonQuery()放入代码>尝试使用inta=cmd.ExecuteScalar()代码>@amarnath我唯一能提供的是:CS0169“login.da”字段从未使用过。CS0169从未使用“login.ds”字段。CS0169从未使用“login.cb”字段。@Flxtr我尝试了ExecuteScalar();结果是:CS0266 C#无法隐式地将类型“object”转换为“int”。存在显式转换(是否缺少强制转换?)当然,是ExecuteScalar()的结果
返回一个字符串,应该将其转换为int,一种方法是使用inta=convert.ToInt32(cmd.ExecuteScalar())代码>数据库当前只有一个用户,无论我键入什么,都会弹出此消息。发生的情况如下:CS0168 C#变量“Exception”已声明但从未使用我认为这不是错误消息,这是警告消息。