zoukankan      html  css  js  c++  java
  • Web.config或App.config中数据库链接路径的问题

           以前做ASP.net WEB开发时Web.config中数据库链接都是配置链接到服务器的SQL SERVER上的,也做过几个小的项目是用SQLite数据库文件内置的。现在在做一个Winform的项目,也用SQLite数据库文件内置,在配置App.config时完全按Web用SQlite时的配置方法。后面出现了保存数据到数据库时,报“No such table”的错误信息,后经检查原因是数据库没有连接上。把App.config数据库连接语句<connectionStrings>
        <clear/>
        <add name="SQLiteDbConnection" connectionString="Data Source=|DataDirectory|Calculation.db;Version=3;BinaryGUID=False" providerName="System.Data.SQLite"/>
      </connectionStrings>中的“|DataDirectory|Calculation.db”改为完全绝对路径(E:\开发项目\演算器项目\Calculation\App_Data\Calculation.db)后,问题解决了。但是考虑到项目的移植性,不可能用绝对路径的。后下面就找动态相对路径的方法,看了好多资料后发现Windows应用项目中不支持特殊的文件夹App_Data。但是为了方便或习惯,还是想用。于是自己建,还叫App_Data。运行发现数据库连不上,从错误信息中来看,原来Winform把|DataDirectory|解析到了程序启动目录apppath\bin\debug(或release),后面不带App_Data!而WEB中|DataDirectory|是解析到目录程序的App_Data文件夹下的。折腾了半天终于搞明白原因了。那我在apppath\bin\debug文件夹下建立App_Data文件夹,在里面放置数据库文件。这样的话一切OK但是后面发现数据保存不成功,最后在网上找了一个方法问题总算解决了。方法如下:

    1. string p = AppDomain.CurrentDomain.BaseDirectory;   
    2.             if (p.IndexOf("\\bin\\") > 0)   
    3.             {   
    4.                 if (p.EndsWith("\\bin\\Debug\\"))   
    5.                     p = p.Replace("\\bin\\Debug""");   
    6.                 if (p.EndsWith("\\bin\\Release\\"))   
    7.                     p = p.Replace("\\bin\\Release""");   
    8.             }   
    9.             if (!p.EndsWith("App_Data\\"))   
    10.                 p = p + "App_Data\\";   
    11.             AppDomain.CurrentDomain.SetData("DataDirectory", p);  

    思想就是去掉调试期间和生产期间的不同,这样要注意的是,发布程序的时候,数据库也要放到App_Data目录下面。

  • 相关阅读:
    最大的错误就是没有把自己的软件开发事业当 作一桩生意来看待
    python:open/文件操作
    Python 之ConfigParser
    Python 之ConfigParser
    Python 之ConfigParser
    python的time模块使用
    python的time模块使用
    python的time模块使用
    国外、国内各大OJ
    国外、国内各大OJ
  • 原文地址:https://www.cnblogs.com/richzhang/p/3056906.html
Copyright © 2011-2022 走看看