asp.net读取access数据库,比asp还慢,

fqingchu 2014-10-16 03:41:55
上代码,数据库中有几条记录还可以,但是数据库中有几百条记录时,就变得很慢,还不如asp的速度快。请高手给解答一下。


private bool Check(string username, string xh)
{
bool boolReturnValue = false;
String OleDbConnectiong = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=";
OleDbConnectiong +=Server.MapPath("1111.mdb");
OleDbConnection Connection = new OleDbConnection(OleDbConnectiong);
String strSQL = "select * from xh where username='" + username + "'and xh='" + xh + "'";
OleDbCommand command = new OleDbCommand(strSQL, Connection);
Connection.Open();
OleDbDataReader Dr = command.ExecuteReader();
while (Dr.Read())
{
if ((username == Dr["username"].ToString()) & (xh == Dr["xh"].ToString()))
{
boolReturnValue = true;
}
}
Dr.Close();
return boolReturnValue;
}
}
...全文
162 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
水猿兵团五哥 2014-10-17
  • 打赏
  • 举报
回复
几百条数据还不至于慢
myhope88 2014-10-17
  • 打赏
  • 举报
回复
access本来就比较慢吧
宝_爸 2014-10-17
  • 打赏
  • 举报
回复
我觉得更大的可能性还是access 慢,估计用sql express会好点。
宝_爸 2014-10-17
  • 打赏
  • 举报
回复
我觉得问题不在ls两位说的。lz试回来了没?
sunny906 2014-10-17
  • 打赏
  • 举报
回复
xh是序号的意思吗?如果是,就把xh字段设置为主键看看;另外,如果只是检查数据表是否存在某些记录的话,就完全用不着用datareader

        private bool Check(string username, string xh)
        {
            bool boolReturnValue = false;
            String OleDbConnectiong = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=";
            OleDbConnectiong += Server.MapPath("1111.mdb");
            OleDbConnection Connection = new OleDbConnection(OleDbConnectiong);
            String strSQL = "select count(*) from xh where username='" + username + "'and xh='" + xh + "'";
            OleDbCommand command = new OleDbCommand(strSQL, Connection);
            Connection.Open();
            object o = command.ExecuteScalar();
            Connection.Close();
            boolReturnValue = Convert.ToInt32(o) == 0 ? false : true;
            return boolReturnValue;
        }
devmiao 2014-10-16
  • 打赏
  • 举报
回复
String strSQL = "select count(*) from xh where username='" + username + "'and xh='" + xh + "'"; OleDbCommand command = new OleDbCommand(strSQL, Connection); return ((int)command.ExecuteScalar() > 0); 后面的代码都不要了
ayanamireizero 2014-10-16
  • 打赏
  • 举报
回复
while (Dr.Read()) { if ((username == Dr["username"].ToString()) & (xh == Dr["xh"].ToString())) { boolReturnValue = true; } } 这里,你都已经在sql里写了where username='" + username + "'and xh='" + xh + "'" 为啥还去做遍历... 直接i if(dr.read()) boolReturnValue = true; 或者直接select count(*) as count from xh where username='" + username + "'and xh='" + xh + "'" if(dr(0)>0) boolReturnValue = true; 不就好了 另外,读access肯定比读sql慢了...

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧