[Access]出现BUG了
请看代码 这是在asp.net 的 C# 代码 目的是为了验证 数据库是否存在已经有的用户名
但我在数据库中录入一条记录后 在网页中验证 还是显示“用户名未被使用”
protected void TextBox_Username_TextChanged(object sender, EventArgs e)
{
try
{
TextBox_Username.Text = TextBox_Username.Text.Trim();
Label_SameUsername.Visible = true;
if (TextBox_Username.Text != "")
{
String Sqlstr = null;
Sqlstr = "SELECT DISTINCT * FROM Account WHERE ACalled=" +
"'" + TextBox_Username.Text + "'" +
";";
/*Sqlstr = "SELECT Aid FROM Account WHERE ACalled=" +
"'"+ TextBox_Username.Text + "'" +
";";*/
if (CheckSameValue(Sqlstr))
{
Label_SameUsername.Text = "* 用户名已被使用";
Label_SameUsername.ForeColor = System.Drawing.Color.Red;
}
else
{
Label_SameUsername.Text = "用户名可以使用";
Label_SameUsername.ForeColor = System.Drawing.Color.Green;
}
}
else
{
Label_SameUsername.Text = "* 用户名不能为空";
Label_SameUsername.ForeColor = System.Drawing.Color.Red;
}
}
catch (
System.Exception ex)
{
ErrorMSG.Visible = true;
Label_ErrorMSG.Text = ex.Message;
}
}
private bool CheckSameValue(String Sqlstr)
{
try
{
CntStr = ConfigurationManager.AppSettings["AccessDrv"] +
HttpContext.Current.Server.MapPath("..\\") +
ConfigurationManager.AppSettings["Database"];
Cnt = new OleDbConnection(CntStr);
Cnt.Open();
Cmd = Cnt.CreateCommand();
Cmd.CommandText = Sqlstr;
if (Cmd.ExecuteNonQuery() >= 1)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
throw (ex);
}
finally
{
Cnt.Close();
}
}
/******web.config*******/
<add key="AccessDrv" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source="/>
<add key="Database" value="App_Data\Database.mdb"/>
/******web.config*******/
我调试了一下看 似乎是 Cmd.ExecuteNonQuery() 这里返回0
但我用SQL执行 的确能查找到一条记录
坐等高手
------解决方案--------------------
对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1
而select 查询的话,返回-1
------解决方案--------------------
你要查询怎么能用ExecuteNonQuery呢?应该是ExecuteDataSet,至少是ExecuteReader或者ExecuteScalar吧