总算找到了问题的原因了,爽,不过感觉自己太粗心了。
2006-06-09 13:51
405 查看
这段代码一直找不到什么地方错了,编译能通过,但是就是没有办法取得数据库中的值,十分郁闷。
到csdn上拜了个高手为师,结果都是指出了一些无关紧要的错误,不过还是得到了一些检查bug的基本方法。
最后在查网页信息的时候,对照人家写的连接Access的源代码一条一条看,才发现原来是红色部分出了问题,而且是两个问题:
1.provider的值给错了Microsoft.Jet.OleDb.4.0写成了Microsoft.Jet.Ole.4.0
2.Server.MapPath(("hqcs.mdb")取出的值居然是D:/hqcs/page/hqcs.mdb,而实际的路径是D:/hqcs/DataSource/hqcs.mdb,这个问题我现在还没找到原因,msdn上关于server.mappath()有好几个版本,我还不能确定到底应该使用那个版本。
namespace hqcs.ascx
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
//database
using System.Data.OleDb;
using System.Data.SqlClient;
//Global funstions
//using hqcs.Global;
/// <summary>
/// Summary description for hqcsNavigationBar.
/// </summary>
public class dtgNavigationBar : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.DataGrid dtgNBar;
protected System.Web.UI.WebControls.Label Label1;
private OleDbConnection conNBar;
private OleDbCommand cmdNBar;
private OleDbDataAdapter dapNBar;
private DataSet dstNBar;
private DataView dtvNBar;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
//connect to database
//string strConnAccess = "Provider = Microsoft.Jet.Ole.4.0;Data Source = " + Server.MapPath("hqcs.mdb");
string strConnAccess = "Provider = Microsoft.Jet.OleDb.4.0;";
strConnAccess += "Data Source = D://hqcs//DataSouce//hqcs.mdb";
conNBar = new OleDbConnection();
conNBar.ConnectionString = strConnAccess;
try
{
conNBar.Open();
//cmdNBar = new OleDbCommand("Select * from hqcs_NavigationBarItems",conNBar);
cmdNBar = new OleDbCommand();
cmdNBar.CommandText = "SELECT * FROM hqcs_NavigationBarItems";
cmdNBar.Connection = conNBar;
dapNBar = new OleDbDataAdapter(cmdNBar);
dstNBar = new DataSet();
dapNBar.Fill(dstNBar,"NavigationBar");
dtvNBar = dstNBar.Tables["NavigationBar"].DefaultView;
int nRecords = 0;
nRecords = dstNBar.Tables["NavigationBar"].Rows.Count;
Label1.Text = nRecords.ToString();
dtgNBar.DataSource = dtvNBar;
dtgNBar.DataBind();
conNBar.Close();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
//this.ID = "dtgNBar";
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
接下来我想对代码进行一些优化,把连接数据库的字段写到web.config中去。
在web.config中添加了以下代码:
<appSettings>
<!-- the connect to database-->
<!-- connect to Access database -->
<add key = "connAccess" value = "Provider = Microsoft.Jet.OleDb.4.0; Data Source =D:/hqcs/DataSouce/hqcs.mdb"></add>
<!--connect to mssql2000-->
<add key="conSql" value="server=Localhost;UID=sa;PWD=sa; database=hqcs;"></add>
</appSettings>
然后再代码中去除原来的字段,加入以下代码:
using System.Configuration;
..............
/*
string strConnAccess = "Provider = Microsoft.Jet.OleDb.4.0;";
strConnAccess += @"Data Source = D:/hqcs/DataSouce/hqcs.mdb";
*/
string strConnAccess = ConfigurationSettings.AppSettings["connAccess"];
用来获得连接数据库的string。
到csdn上拜了个高手为师,结果都是指出了一些无关紧要的错误,不过还是得到了一些检查bug的基本方法。
最后在查网页信息的时候,对照人家写的连接Access的源代码一条一条看,才发现原来是红色部分出了问题,而且是两个问题:
1.provider的值给错了Microsoft.Jet.OleDb.4.0写成了Microsoft.Jet.Ole.4.0
2.Server.MapPath(("hqcs.mdb")取出的值居然是D:/hqcs/page/hqcs.mdb,而实际的路径是D:/hqcs/DataSource/hqcs.mdb,这个问题我现在还没找到原因,msdn上关于server.mappath()有好几个版本,我还不能确定到底应该使用那个版本。
namespace hqcs.ascx
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
//database
using System.Data.OleDb;
using System.Data.SqlClient;
//Global funstions
//using hqcs.Global;
/// <summary>
/// Summary description for hqcsNavigationBar.
/// </summary>
public class dtgNavigationBar : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.DataGrid dtgNBar;
protected System.Web.UI.WebControls.Label Label1;
private OleDbConnection conNBar;
private OleDbCommand cmdNBar;
private OleDbDataAdapter dapNBar;
private DataSet dstNBar;
private DataView dtvNBar;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
//connect to database
//string strConnAccess = "Provider = Microsoft.Jet.Ole.4.0;Data Source = " + Server.MapPath("hqcs.mdb");
string strConnAccess = "Provider = Microsoft.Jet.OleDb.4.0;";
strConnAccess += "Data Source = D://hqcs//DataSouce//hqcs.mdb";
conNBar = new OleDbConnection();
conNBar.ConnectionString = strConnAccess;
try
{
conNBar.Open();
//cmdNBar = new OleDbCommand("Select * from hqcs_NavigationBarItems",conNBar);
cmdNBar = new OleDbCommand();
cmdNBar.CommandText = "SELECT * FROM hqcs_NavigationBarItems";
cmdNBar.Connection = conNBar;
dapNBar = new OleDbDataAdapter(cmdNBar);
dstNBar = new DataSet();
dapNBar.Fill(dstNBar,"NavigationBar");
dtvNBar = dstNBar.Tables["NavigationBar"].DefaultView;
int nRecords = 0;
nRecords = dstNBar.Tables["NavigationBar"].Rows.Count;
Label1.Text = nRecords.ToString();
dtgNBar.DataSource = dtvNBar;
dtgNBar.DataBind();
conNBar.Close();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
//this.ID = "dtgNBar";
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
接下来我想对代码进行一些优化,把连接数据库的字段写到web.config中去。
在web.config中添加了以下代码:
<appSettings>
<!-- the connect to database-->
<!-- connect to Access database -->
<add key = "connAccess" value = "Provider = Microsoft.Jet.OleDb.4.0; Data Source =D:/hqcs/DataSouce/hqcs.mdb"></add>
<!--connect to mssql2000-->
<add key="conSql" value="server=Localhost;UID=sa;PWD=sa; database=hqcs;"></add>
</appSettings>
然后再代码中去除原来的字段,加入以下代码:
using System.Configuration;
..............
/*
string strConnAccess = "Provider = Microsoft.Jet.OleDb.4.0;";
strConnAccess += @"Data Source = D:/hqcs/DataSouce/hqcs.mdb";
*/
string strConnAccess = ConfigurationSettings.AppSettings["connAccess"];
用来获得连接数据库的string。
相关文章推荐
- JAVA聊天室客户端不显示内容,服务端没问题的原因总算找到了(其实问题不是这个)
- oracle 日期问题 网上找到自己查阅时方便
- 婚纱照的官方版出来了,不过感觉还不如我自己拍的好看,郁闷~~~
- 牵扯较多属性和方法的类题目,很简单的题目本来不想发的,如果有同学学到这个题目感觉太长不愿敲代码,copy走我的即可~不过还是建议自己打一打
- .Net应用程序发布问题的最新解决方案,感觉比较爽(可桌面、程序中加自己的ICO及卸载等(转贴)
- poi 和jxl的性能比较,借鉴别人的,本人没有测试过,不过感觉自己可以接收这种解释
- 奇葩问题001:Idea无法正常编译(代码没有问题)【原因已找到】
- 找到工作问题不大,只要自己学好
- eclipse中某工程的断点进不去问题,折腾了N个小时才找到原因,郁闷
- java路径问题的解决方案 感觉写的很好 转到自己空间留着
- 一个目前没找到原因的问题
- 应该找到了问题的真正原因
- 使用xbmc/kodi作为dlna render设备时,连接到某些wifi热点/路由器上,不能被dlna control找到发现的问题——原因是WIFI模组深度优化后,从省电模式唤醒时,会丢失组播包
- 管理是需要的。我是在99年接触csdn的。那时在csdn上看帖子,订程序员杂志,真是感觉获益非浅,由于工作的原因又一段时间没有上csdn。前几天和别的公司程序员聊天,我无意中说道,可以去csdn找找帮助呀,也许程序上的问题就解决了,他的回答让我吃了一惊,c
- 从别处找到的有关web打印的东西,自己用了一下,还真不错,解决我的大问题了
- Linux下的多线程问题找到原因了
- 找到问题的真正原因:20121021服务器故障处理经历
- iOS开发UIDevice查看系统信息,从一个问题开始如何快速找到自己想要的属性和方法并看懂它
- mysql 短连接压测遇到的问题及查找解决思路[终于找到原因了]
- 感觉自己总是写代码,看代码,解决问题,却从未总结过,从今天起开始总结。