开发了一个小程序,制作成安装包,然后装到另外一台电脑上就不行了,那台电脑也装了SQL .new framework版本都是一样的
怀疑是连接字符串的问题,如果是这个问题那要怎么搞?别人说动态修改配置文件?能具体说下吗?毕竟每台电脑的用户名计算机名什么的都不一样呀,另外有没办法不用装SQL也可以独立运行呀?

解决方案 »

  1.   

    数据库 你是怎么安装过去的.不想安装SQL的话 用ACCESS 吧.
      

  2.   

    再程序里添加一个app.config配置文件用于存放连接字符串,你从网上搜一下配置文件读写会有很多的
      

  3.   

    就是APP.config文件里面的数据库连接字符串问题
    我就想问下这个问题怎么办
    不可能每次都要重新过吧?
    不能让他根据安装的电脑计算名字等不同区动态的改变吗?
      

  4.   

    用local,不指定数据库的实例名就可以了。
    DataSource=(local)
    或者
    DataSource=.\SQLEXPRESS
      

  5.   

    比如说开发这个小程序的电脑连接字符串是这个
    Data Source=ROY;Initial Catalog=wuhu;Integrated Security=True
    换台计算机名字是123 要怎么让那个ROY变成123?
      

  6.   

    APP.config里面的内容当然是可以动态修改的,现在APP.config的连接字符为空,然后
    你可以加两输入窗口分别是用户名和密码,然后通过:Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
    config.AppSettings.Settings.Add(“Name”,"Value"); 这样就可以实现动态的了~
    不过我很好奇,为什么你客户端的连接字符要用本地登陆呢?
      

  7.   

    我用winform做的一个小程序,只要求实现单机版
    然后可以在其它机子上安装运行就可以了
    不是得获取本地的datasource吗?
      

  8.   

    本机附加数据库文件
    config文件修改下配置
    <add key="connectstring" value="Data Source=.\SQLEXPRESS;Initial Catalog=YourBaseName;User ID=sa;Password="/>
      

  9.   

    那你手动改下config中名字不就好了
      

  10.   

    动态配置config文件也可以,但是复杂一点,需要在程序中修改config文件,其实就是操作xml方法
      

  11.   

    用SQLDMO吧,自己做个连接工具,发现连接不通时调用一下。#region 加载服务器列表
            private void LoadServers()
            {
                cbServer.Items.Clear();            
                SQLDMO.ApplicationClass app = new SQLDMO.ApplicationClass();
                SQLDMO.NameList list = app.Application.ListAvailableSQLServers();
                string server;
                for (int i = 0; i < list.Count; i++)
                {
                    server = list.Item(i);
                    if (server == null)
                        continue;
                    cbServer.Items.Add(server);
                }
                if (list.Count < 1)
                {
                    cbServer.Items.Add("localhost");
                }
                cbServer.SelectedIndex = 0;
            }
            #endregion     #region 加载数据库列表
            private void loadDbName()
            {
                SqlConnection conn = null;
                try
                {
                    string ConStr =string.Empty;
                    if (cbCheckType.SelectedIndex==0)
                    {
                        ConStr = "Data Source=" + cbServer.Text +";Initial Catalog=master;Integrated Security=True";           
                    }
                    else
                    {
                           ConStr = @"Server=" + cbServer.Text.Trim() +
                        ";Uid=" + tbUid.Text.Trim() +
                         ";pwd=" + tbPwd.Text.Trim() +
                         ";Database=master";
                    }
                    String SelectDBQuery = "SELECT  NAME  FROM  sysdatabases  ORDER  BY NAME";
                    conn = new SqlConnection(ConStr);
                    conn.Open();     
                    SqlCommand cmd = new SqlCommand(SelectDBQuery, conn);
                    SqlDataReader reader = cmd.ExecuteReader();
                    cbDbName.Items.Clear();
                    while (reader.Read())
                    {
                        cbDbName.Items.Add(reader.GetString(0));
                    }
                    reader.Close();
                    cmd.Dispose();
                    conn.Close();
                }
                catch (Exception ex)
                {
                    cbDbName.Items.Clear();
                }
                finally
                {
                    if (conn != null)
                    {
                        conn.Close();
                    }
                }
            }然后拼连接字符串吧。