我设置的连接字符串是这样的:
XML 文件中设置:
<value>server=100.8.2.1;database=AIS20080906180815;uid=sa;password=test</value>我在设置的文档中这样设置using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Xml;
using System.IO;/// <summary>
///Class1 的摘要说明
/// </summary>
public class Access
{
public static SqlConnection Scn = new SqlConnection();
    
    public Access()
    {
    }     public  string GetConnString()
    {
        StringReader sr = new StringReader(@"D:\Applition\WebSite1\Set.xml");
       return sr.ReadLine();      
    }//然后在其它界面中调用using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;public partial class ItemDeal : System.Web.UI.Page
{
    SqlConnection scn=new SqlConnection();
    Access acc = new Access();
    
    protected void Page_Load(object sender, EventArgs e)
    {        
        getscnstr();
        getSeFile();
    }    private void getscnstr()
    {
        if (scn.ConnectionString == "")
        {
            scn.ConnectionString = Access.Scn.ConnectionString;
        }
    }
    private void getSeFile()
    {
        if (scn.State==ConnectionState.Closed)
        {
        scn.Open();
        }
        DataTable dt = new DataTable();
        dt = acc.GetSereachData("select * from ItItem_sefiled WHERE SeFileClass='Filed' and IsSelect=1");       
        DdSeFile.DataSource = dt;
        DdSeFile.DataValueField = "SeFileID";
        DdSeFile.DataTextField = "SeFileName";
        DdSeFile.DataBind();
        scn.Close();
    }
但是当我刷新之后连接字符串就会变成“100.8.2.1;database=AIS20080906180815;uid=sa;”难道我每刷新一次都必须从XML文档里面读取连接字符串?或者是我的处理方法存在问题?请高手指教。

解决方案 »

  1.   

    方法如下:1:写在web.config里面 比较常用,推荐
    2:你读xml文件后就应该把读取到的信息缓存起来,这样效率会很高的
    3:既然只是数据库连接字符串的话,你完全可以直接写在CS文件里面,给个属性就完了综上所述 你目前用的方法实在不怎么好
      

  2.   

     StringReader sr = new StringReader(@"D:\Applition\WebSite1\Set.xml");
           return sr.ReadLine();   
    sr不用Close或者dispose吗?
      

  3.   

      private void getSeFile()
        {
            if (scn.State==ConnectionState.Closed)
            {
            scn.Open();
            }
            DataTable dt = new DataTable();
            dt = acc.GetSereachData("select * from ItItem_sefiled WHERE SeFileClass='Filed' and IsSelect=1");       
            DdSeFile.DataSource = dt;
            DdSeFile.DataValueField = "SeFileID";
            DdSeFile.DataTextField = "SeFileName";
            DdSeFile.DataBind();
            scn.Close();
        }
    假如在  DdSeFile.DataBind();这行出错了,scn.close就不执行了哦!
      

  4.   

    第一点,我没么用过。是不是写到web.config 里面,每次刷新页面时,也仍然还要读取一次呢?
    2.我是保存起来的,保存在Access.cs的类文件里面,但是刷新后再次读取时,password那一段就会自动的没有掉。。很奇怪。
    3.是从CS文件里取过来的静态变量,我改成属性看一看。
      

  5.   

    郁闷,我的问题很简单:
    就是我的连接字符串在刷新之后,password怎么会无故没有了呢?
    这个是ASP.net的特性?
    没高手?
      

  6.   


    <connectionStrings>
    <add name="BlogSqlConn" connectionString="Data Source=192.168.10.12; Initial Catalog=BlogE; User Id=aspuser; password=000000"/>
    </connectionStrings>
    在Web.config里面配置, 你的连接字符串失效 有可能是变量被释放了!!
      

  7.   

    webconfig里面的配置<connectionStrings>
    <add name="connstring" connectionString="server=.;uid=sa;pwd=数据库密码;database=数据库名称" providerName="System.Data.SqlClient"/>
    </connectionStrings>获取连接private string GetConnectionString()
    {
         return ConfigurationManager.ConnectionStrings["connstring"].ConnectionString;
    }
    SqlConnection conn = new SqlConnection(GetConnectionString());