数据库查寻出现错误E_FAIL(0x80004005)
程序用SQL2005数据库正常,后来我把它改成Access就出现错误了
错误是:常详细信息: System.Data.OleDb.OleDbException: IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。
源错误:
行 74: OleDbDataAdapter sda = new OleDbDataAdapter(sql, sqlcon);
行 75: DataSet ds = new DataSet();
行 76: sda.Fill(ds);行 77: return ds;
行 78: sqlcon.Close();
代码如下:
数据库类 ODBdata.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
public class ODBdata
{
private OleDbConnection sqlcon;
private OleDbCommand sqlcom;
private OleDbDataAdapter sqldata;
public ODBdata()
{
string ODBpath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath(@"../App_Data\#data.mdb");
sqlcon = new OleDbConnection(ODBpath);
sqlcon.Open();
}
public DataSet bandshen(string sql)
{
OleDbDataAdapter sda = new OleDbDataAdapter(sql, sqlcon);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds;
sqlcon.Close();
}
}
页面left.aspx.cs代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
public partial class Manage_default_left : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeViewBind();
}
}
private void TreeViewBind()
{
string strsql = "select * from BackMenu where Position=0";
ODBdata da = new ODBdata();
using (DataSet ds = da.bandshen(strsql))
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TreeNode myNode = new TreeNode();
myNode.Text = ds.Tables[0].Rows[i]["purview_cn"].ToString();
this.TreeMenu.Nodes.Add(myNode);
}
}
}
}
------------------------------
本人发现一个问题select * from BackMenu where Position=0 这句搜索语句,一当去掉 where Position=0,程序就正常了,这是为什么呢,请问要怎么改?
之前用SQL2005数据是正常的,改成Access后才会出现这样的错误