关于ASP.NET连接ACCESS数据库的问题

问题描述

登陆通过验证码后就不能读取数据库...登陆的后台代码是:protectedvoidPage_Load(objectsender,EventArgse){}protectedvoidbtnLogin_Click(objectsender,EventArgse){DBdb=newDB();stringuserName=this.txtUserName.Text.Trim();stringpassWord=db.MD5(this.txtPwd.Text.Trim());stringnum=this.txtValidateNum.Text.Trim();if(Session["ValidateNum"].ToString()==num.ToUpper()){OleDbDataReaderdr=db.reDr("select*fromtb_UserwhereUserName='"+userName+"'andPassWord='"+passWord+"'");dr.Read();if(dr.HasRows){Session["UserID"]=dr.GetValue(0);Session["Role"]=dr.GetValue(4);Response.Redirect("~/UserManagement.master");}else{Response.Write("<script>alert('登录失败!不存在此用户或者是密码错误');location='login.aspx'</script>");}dr.Close();}else{Response.Write("<script>alert('验证码错误!');location='login.aspx'</script>");}}}但登陆时出现了这个错误。我的DB类的这个方法出了问题:publicOleDbDataReaderreDr(stringstr){OleDbConnectionconn=GetCon();//连接数据库conn.Open();//并打开了连接OleDbCommandcom=newOleDbCommand(str,conn);OleDbDataReaderdr=com.ExecuteReader(CommandBehavior.CloseConnection);returndr;//返回OleDbDataReader对象dr}WEB.CONFIG里的连接数据库:<configurationxmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"><appSettings><addkey="ConnectionString"value="Provider=Microsoft.Jet.OleDb.4.0;"/></appSettings>究竟是哪里出问题呢?

解决方案

解决方案二:
连接字符串问题stringstrConnnection=@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=";strConnnection+=Server.MapPath("~/App_Data/a.mdb");
解决方案三:
我刚刚按你博客的说法把WEB.CONFIG里改成:<appSettings><addkey="SQLConnString"value="provider=microsoft.jet.oledb.4.0;datasource="/><addkey="dbPath"value="~/App_Data/db_Student.mdb"/></appSettings>然后登陆时就说这里有问题:我把整个DB类贴一下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.OleDb;usingSystem.Security.Cryptography;///<summary>///db的摘要说明///</summary>publicclassDB{publicDB(){}publicOleDbConnectionGetCon(){returnnewOleDbConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());}publicintOleDbEx(stringcmdstr){OleDbConnectioncon=GetCon();con.Open();OleDbCommandcmd=newOleDbCommand(cmdstr,con);try{cmd.ExecuteNonQuery();return1;}catch(Exceptione){return0;//失败返回0}finally{con.Dispose();}}publicDataTablereDt(stringcmdstr){OleDbConnectioncon=GetCon();OleDbDataAdapterda=newOleDbDataAdapter(cmdstr,con);DataSetds=newDataSet();da.Fill(ds);return(ds.Tables[0]);}publicOleDbDataReaderreDr(stringstr){OleDbConnectionconn=GetCon();conn.Open();OleDbCommandcom=newOleDbCommand(str,conn);OleDbDataReaderdr=com.ExecuteReader(CommandBehavior.CloseConnection);returndr;}}
解决方案四:
用这个吧:至少要把数据操作封装一下呀
解决方案五:
stringstrConnnection=@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=";strConnnection+=Server.MapPath("~/App_Data/a.mdb");这句是写在主程序上还是类里啊?
解决方案六:
<appSettings><addkey="ConnString"value="provider=microsoft.jet.oledb.4.0;datasource="/><addkey="dbPath"value="~/App_Data/db_Student.mdb"/></appSettings>

publicOleDbConnectionGetCon(){returnnewOleDbConnection(ConfigurationManager.AppSettings["ConnString"].ToString()+System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["dbPath"].ToString()));}

解决方案七:
以下是我帮一公司做的,也是ACCESS的:<connectionStrings><addname="xxString"connectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=#"providerName="System.Data.OleDb"/></connectionStrings>以下是主要代码了(我封装在一个类里):staticConfigurationGenerlerSets(){//初始化数据库提供程序和数据库链接字符串providerName=ConfigurationManager.ConnectionStrings["xxcroConnectionString"].ProviderName;stringstr=ConfigurationManager.ConnectionStrings["xxcroConnectionString"].ConnectionString;connectionString=str.Replace("#",System.Web.HttpContext.Current.Server.MapPath("~/App_Data/")+"xx.mdb");//这里,自己看下.NET交流群:11425434
解决方案八:
首先,用VS2005:web.config:<connectionStrings><addname="myConn"connectionString="~/Data/DB.mdb"/></connectionStrings>.cs:privatestaticstringconnectionString;privatestaticstringGetConnectionString(){stringmyConnectionString=System.Web.HttpRuntime.Cache["ConnectionString"].ToString();if(myConnectionString==null){connectionString=myConnectionString;System.Web.HttpRuntime.Cache["ConnectionString"]=connectionString;}returnconnectionString;}publicstaticOleDbConnectionGetConn(){OleDbConnectionConn;stringmyConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.ConnectionStrings["myConn"].ConnectionString);stringConnString=myConnectionString;Conn=newOleDbConnection(ConnString);returnConn;}publicstaticintExecNonQuery(stringmySql){OleDbConnectionmyConn=GetConn();OleDbCommandmyCmd=newOleDbCommand(mySql,myConn);myCmd.CommandText=mySql;myConn.Open();intmyTmp=myCmd.ExecuteNonQuery();myCmd.Dispose();myConn.Close();returnmyTmp;}publicstaticobjectExecScalar(stringmySql){OleDbConnectionmyConn=GetConn();OleDbCommandmyCmd=newOleDbCommand(mySql,myConn);myConn.Open();objectmyTmp=myCmd.ExecuteScalar();myCmd.Dispose();myConn.Close();returnmyTmp;}publicstaticOleDbDataReaderExecReader(stringmySql){OleDbConnectionmyConn=GetConn();OleDbCommandmyCmd=newOleDbCommand(mySql,myConn);myConn.Open();OleDbDataReadermyReader=myCmd.ExecuteReader(CommandBehavior.CloseConnection);myCmd.Dispose();returnmyReader;}

解决方案九:
你的conn一直开着,把conn.open();省略掉试试看
解决方案十:
引用8楼laoyingisme的回复:

你的conn一直开着,把conn.open();省略掉试试看

楼上的你说错了如果不打开那怎么能执行相应的查询语句了这应该是select语句的错误或者是字符连接的问题具体错在那我就不知道了我现在看见代码眼睛就疼哀哀
解决方案十一:
publicstaticSqlConnectionReturnConn(){stringstrConn=System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];SqlConnectionConn=newSqlConnection(strConn);if(Conn.State.Equals(ConnectionState.Closed)){Conn.Open();}returnConn;}这样就可以防止你的问题了
解决方案十二:
我写重来没有出现过这问题,一般都是一次性成功
解决方案十三:
很好谢谢大家了,我等下再调试。
解决方案十四:
引用10楼hzxbl的回复:

publicstaticSqlConnectionReturnConn(){stringstrConn=System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];SqlConnectionConn=newSqlConnection(strConn);if(Conn.State.Equals(ConnectionState.Closed)){Conn.Open();}returnConn;}这样就可以防止你的问题了

正解
解决方案十五:
引用13楼yanlan112的回复:

引用10楼hzxbl的回复:publicstaticSqlConnectionReturnConn(){stringstrConn=System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];SqlConnectionConn=newSqlConnection(strConn);if(Conn.State.Equals(ConnectionState.Closed)){Conn.Open();}returnConn;}这样就可以防止你的…

一个新的CONN不用判断
解决方案:
按照LS的,我应该是连到了数据库了但为什么输入账号密码时就说我错误呢?我很肯定数据库里的账号密码没错的。protectedvoidbtnLogin_Click(objectsender,EventArgse){DBdb=newDB();stringuserName=this.txtUserName.Text.Trim();stringpassWord=db.MD5(this.txtPwd.Text.Trim());stringnum=this.txtValidateNum.Text.Trim();if(Session["ValidateNum"].ToString()==num.ToUpper()){OleDbDataReaderdr=db.reDr("select*fromtb_UserwhereUserName='"+userName+"'andPassWord='"+passWord+"'");dr.Read();if(dr.HasRows){Session["UserID"]=dr.GetValue(0);Session["Role"]=dr.GetValue(4);Response.Redirect("~/UserManagement.master");}else{Response.Write("<script>alert('登录失败!不存在此用户或者是密码错误');location='login.aspx'</script>");}dr.Close();}else{Response.Write("<script>alert('验证码错误!');location='login.aspx'</script>");}}这里应该没问题吧???我的DB_STUDENT表
解决方案:
没人帮忙解答下么???连到数据库了就说我账号密码都不对。。。
解决方案:
建议拖个OleDataSource,自动生成一个连接字符串,看看什么毛病。重要的是解决问题的方法。

时间: 2024-09-14 16:58:04

关于ASP.NET连接ACCESS数据库的问题的相关文章

asp.net连接Access数据库例子

access|asp.net|数据|数据库 asp.net连接Access数据库 <%@ Import Namespace="System.Data" %>    <%@ Import NameSpace="System.Data.OleDb" %>    <script laguage="VB" runat="server">    Dim myConnection As OleDbCon

ASP.NET连接 Access数据库的几种方法_实用技巧

web.config 第一种方法: <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应用程序的详细消息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <appSettings> <add key="AccessConnString"

64位Windows 2003下ASP无法连接Access数据库

症状:64位Windows 2003下面配置好IIS后,运行ASP页面,如果里面有连接access数据库的代码,就会出现错误警告: ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. /连接"网站内容管理"数据库.asp,行 2 原因:IIS是以64位方式来运行的,它只能加载64位模块,不能加载32位模块.而访问access数据库的jet引擎只有32位的,没有64位,因此无法被IIS加载. 解决思路:让IIS以32位方式运行,从而可以调

关于asp.net 连接access数据库insert刷新问题 涉及到gridview

问题描述 这个问题就是,页面里有个gridview,一个button按钮,点击button后执行数据插入,就是把新数据插入到数据库中,而gridview是绑定这个数据库的,点击插入后,需要刷新页面才能看到gridview里面的跟新,如何弄可以插入后能立即自动刷新gridview呢更详细说明:就是页面里有个webbutton控件和一个gridview控件gridview绑定了一个access数据库,设名字为"accessdata"现在点击button按钮后执行数据插入,把新数据写入acc

ASP.NET 连接ACCESS数据库的简单方法

一段非常简单的连接ACCESS数据库的实例代码,有需要的朋友可以参考一下   index.aspx 复制代码 代码如下: <%@ Page Language="C#" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.OleDb" %> <script runat="server">

在Win2003 64位下ASP无法连接Access数据库_应用技巧

复制代码 代码如下: ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. /连接"网站内容管理"数据库.asp,行 2 原因:IIS是以64位方式来运行的,它只能加载64位模块,不能加载32位模块.而访问access数据库的jet引擎只有32位的,没有64位,因此无法被IIS加载. 解决思路:让IIS以32位方式运行,从而可以调用32位的jet引擎 解决方法:在命令行窗口输入 cscript C:\inetpub\adminscript

Win2003 64位下ASP无法连接Access数据库的解决方法_win服务器

ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. /连接"网站内容管理"数据库.asp,行 2 原因:IIS是以64位方式来运行的,它只能加载64位模块,不能加载32位模块.而访问access数据库的jet引擎只有32位的,没有64位,因此无法被IIS加载. 解决思路:让IIS以32位方式运行,从而可以调用32位的jet引擎 解决方法:在命令行窗口输入 复制代码 代码如下: cscript C:\inetpub\adminscript

在Win2003 64位下ASP无法连接Access数据库

复制代码 代码如下: ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. /连接"网站内容管理"数据库.asp,行 2 原因:IIS是以64位方式来运行的,它只能加载64位模块,不能加载32位模块.而访问access数据库的jet引擎只有32位的,没有64位,因此无法被IIS加载. 解决思路:让IIS以32位方式运行,从而可以调用32位的jet引擎 解决方法:在命令行窗口输入 cscript C:\inetpub\adminscript

asp.net连接access数据库路径问题

 解决方案一:  在 Web.Config 中配置 Access 数据库教程驱动和数据库文件名称.  请看代码 <appSettings>  <add key="DBDriver" value="Provider=Microsoft.Jet.OLEDB.4.0; Data Source ="/>  <add key="DBName" value="Company.mdb"/>  </a

asp.net连接access数据库路径问题最终解决方案

解决方案一: 在 Web.Config 中配置 Access 数据库教程驱动和数据库文件名称. 请看代码 <appSettings> <add key="DBDriver" value="Provider=Microsoft.Jet.OLEDB.4.0; Data Source ="/> <add key="DBName" value="Company.mdb"/> </appSett