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

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

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

如何解决Spring MVC中响应乱码问题

《如何解决SpringMVC中响应乱码问题》:本文主要介绍如何解决SpringMVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC最新响应中乱码解决方式以前的解决办法这是比较通用的一种方法总结Spring MVC最新响应中乱码解

Java报NoClassDefFoundError异常的原因及解决

《Java报NoClassDefFoundError异常的原因及解决》在Java开发过程中,java.lang.NoClassDefFoundError是一个令人头疼的运行时错误,本文将深入探讨这一问... 目录一、问题分析二、报错原因三、解决思路四、常见场景及原因五、深入解决思路六、预http://www