如何在未安装SQL Server的计算机上运行带有SQL数据库的应用程序

时间:2012-08-17 12:48:00

标签: c# sql database deployment connection

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

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

这是我在我的应用程序>>

中使用的连接字符串
  

的connectionString =“数据   源= \ SQLEXPRESS; AttachDbFilename = | DataDirectory目录| \ KBank.mdf;集成   安全性=真;用户实例=真“

所以,如果有一种方法可以让我运行应用程序而不需要机器安装SQL Server,我将不胜感激。感谢

5 个答案:

答案 0 :(得分:3)

您需要更改连接字符串以指定安装数据库的计算机。如下所示:

  

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

请注意:其他计算机上的数据库需要正确配置,以便可以从其他计算机访问。

答案 1 :(得分:1)

您的连接字符串使用的是localhost,它通过连接字符串中的.表示。如果计算机没有安装SQL Server,则此操作无效,因此您需要将连接字符串更改为远程计算机(具有SQL Server安装的计算机,即您的个人计算机)。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

  • 作为安装过程的一部分,在客户端计算机上安装SQL Server Express
  • 在您和您的客户有权访问的服务器上使用集中式SQL服务器

您可以采用其他数据访问策略,例如将数据序列化为XML,或使用其他数据库(如SQLite或使用Web服务),但简单地说,如果未安装SQL Server Express,你客户的机器,你不能强迫它工作。

答案 4 :(得分: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文件。

希望这会对你有帮助!