总算找到了问题的原因了,爽,不过感觉自己太粗心了。

2024-02-04 15:48

本文主要是介绍总算找到了问题的原因了,爽,不过感觉自己太粗心了。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这段代码一直找不到什么地方错了,编译能通过,但是就是没有办法取得数据库中的值,十分郁闷。

到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。

这篇关于总算找到了问题的原因了,爽,不过感觉自己太粗心了。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/678012

相关文章

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模