3

我开发了一个应用程序,它有一个显示来自 SQL 数据库的一些数据的滑块。我正在使用 Visual Studio 2010 和 Microsoft SQL Server 2008。

事实上,当我部署它并在我的个人计算机上运行它时,我的应用程序没有遇到任何问题。当我在另一台机器上尝试时出现问题,问题是应用程序无法连接 SQL 数据库。我试图找出问题的原因,所以我在两台机器上部署后尝试了它,其中一台安装了 SQL Server,另一台没有 SQL Server。该应用程序在安装了 SQL Server 的机器上运行良好,并且无法连接到另一台机器上的数据库。

这是我在我的应用程序中使用的连接字符串>>

connectionString="数据源=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\KBank.mdf;Integrated Security=True;用户实例=True"

因此,如果有一种方法可以让我在不需要机器安装 SQL Server 的情况下运行应用程序,我将不胜感激。谢谢

4

5 回答 5

3

您需要更改连接字符串以指定安装数据库的计算机。类似于以下内容:

connectionString="Data Source=machine\SQLEXPRESS;AttachDbFilename=|DataDirectory|\KBank.mdf;Integrated Security=True;User Instance=True"

请注意:另一台机器上的数据库需要正确配置,才能从其他机器上访问。

于 2012-08-17T12:51:48.693 回答
2

您需要执行以下操作之一:

  • 在安装过程中包括在客户端计算机上安装 SQL Server Express
  • 在您和您的客户有权访问的服务器上使用集中式 SQL 服务器

您可以使用其他数据访问策略,例如将数据序列化为 XML,或使用SQLite等不同的数据库 或使用 Web 服务,但简单地说,如果您的客户端计算机上未安装 SQL Server Express,您可以t 强制它工作。

于 2012-08-17T12:52:22.097 回答
1

您的连接字符串正在使用 localhost,它通过.连接字符串中的 表示。如果机器没有安装 SQL Server,这将不起作用,因此您需要将连接字符串更改为远程机器(安装了 SQL Server 的机器,即您的个人计算机)。

于 2012-08-17T12:51:04.977 回答
1

如果您不想安装 SQL Server Express,您可以通过 sql server compact(http://en.wikipedia.org/wiki/SQL_Server_Compact) 使用嵌入式 SQL Server,或者使用实际的网络数据库。

于 2012-08-17T12:51:47.403 回答
0

如果您使用 centerl 数据库安装在服务器计算机和其他所有客户端计算机都可以访问该服务器。

如果是你可以通过以下方式:

首先,您将程序更改为在程序启动时将文件 DSN 写入硬盘

使用以下代码作为示例

 private void MakeDSN()
        {
            try
            {
                if (!System.IO.Directory.Exists(@"C:\OTPub"))
                {
                    System.IO.Directory.CreateDirectory(@"C:\OTPub");
                }

                if (File.Exists(@"C:\OTPub\Ot.dsn"))    //delete ErrorLogFile
                {
                    File.SetAttributes(@"C:\OTPub\Ot.dsn", FileAttributes.Temporary);
                    File.Delete(@"C:\OTPub\Ot.dsn");
                }
                string con = "[ODBC]";
                string driver = "DRIVER=SQL Server";
                string uid = "UID=sa";
                string DB = "DATABASE=OTData";
                string server = "SERVER=10.63.210.111";

                var tw = new StreamWriter(@"C:\OTPub\Ot.dsn", true); // make file in location
                using (tw)
                {
                    tw.WriteLine(con);   //write  dataline
                    tw.WriteLine(driver);
                    tw.WriteLine(uid);
                    tw.WriteLine(DB);
                    tw.WriteLine(server);
                }

                lbserver.Text="LOGIN "+server;
            }
            catch (Exception)
            {
                MessageBox.Show("File DSN Error!");
            }
        }

输入您的服务器IP为 string server

现在您可以在单独的类中使用连接

using System.Data.Odbc;

  class DataBaseConnection
    {
        private OdbcConnection conn1 = new OdbcConnection(@"FILEDSN=C:/OTPub/Ot.dsn;" + "Uid=sa;" + "Pwd=123;"); 

        //insert,update,delete
        public int SetData(string query)
        {
            try
           {
                conn1.Open();
                OdbcCommand command = new OdbcCommand(query, conn1);
                int rs = command.ExecuteNonQuery();
                conn1.Close();
                return rs;
            }
            catch (Exception ex)
            {
                conn1.Close();
                throw ex;
            }
        }

        //select
        public System.Data.DataTable GetData(string sql)
        {
            try
            {
                conn1.Open();
                OdbcDataAdapter adpt = new OdbcDataAdapter(sql, conn1);
                DataTable dt = new DataTable();
                adpt.Fill(dt);
                conn1.Close();
                return dt;
            }
            catch (Exception ex)
            {
                conn1.Close();
                throw ex;
            }
        }
    }

现在您可以编写以下代码来连接数据库所需的不同位置,

 DataBaseConnection db = new DataBaseConnection();

如果您需要 SELECT 查询:

DataTable dt = db.GetData("SELECT * From TestTable");

如果您需要插入、更新、删除查询

int i=db.SetData("INSERT INTO TestTable(name,address,tel) VALUES (testname,Colombo,0777125896) ");

此方法无需任何配置即可使用连接数据库。

重要提示:出于安全目的,请记住在退出应用程序时删除 DSN 文件。

希望对你有帮助!

于 2017-03-30T06:28:02.520 回答