3

SQL データベースのデータを表示するスライダーを持つアプリケーションを開発しました。Visual Studio 2010 と Microsoft SQL Server 2008 を使用しています。

実際、自分のアプリケーションを自分のパソコンにデプロイして実行しても、問題は発生しません。別のマシンで試してみると問題が発生し、問題はアプリケーションが SQL データベースに接続できなかったことです。問題の原因を突き止めようとしたので、2 台のマシンに展開してから試してみました。そのうちの 1 台には SQL サーバーがインストールされており、もう 1 台には SQL サーバーがインストールされていません。アプリケーションは、SQL Server がインストールされているマシンでは完全に機能しましたが、他のマシンのデータベースには接続できませんでした。

これは、アプリケーションで使用した接続文字列です>>

connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\KBank.mdf;Integrated Security=True;User Instance=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 がクライアントのマシンにインストールされていない場合は、強制的に機能させないでください。

于 2012-08-17T12:52:22.097 に答える
1

接続文字列は、接続文字列の で表される localhost を使用してい.ます。これは、マシンに SQL Server がインストールされていない場合は機能しないため、接続文字列をリモート マシン (SQL Server がインストールされているマシン、つまり自分のパソコン) に変更する必要があります。

于 2012-08-17T12:51:04.977 に答える
1

If you do not want to have a SQL Server Express installed, you can go for an embedded SQL server via sql server compact(http://en.wikipedia.org/wiki/SQL_Server_Compact) or alternatively have an actual networked database available.

于 2012-08-17T12:51:47.403 に答える
0

If you using centerl database install in Server computer and other all client computer can access to that sever.

If it's you can doing the following way:

first you change your program to write File DSN to Hard disk at start up of program

Use the following code as sample

 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!");
            }
        }

Enter your server Ip as string server

Now you can use connection in separate class

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;
            }
        }
    }

Now you can write following code your different required place for connect to database,

 DataBaseConnection db = new DataBaseConnection();

If you need SELECT query:

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

If you need Insert, Update, Delete query

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

This method can use connect to database without any configurations.

Important: keep remember delete DSN file when exit application for security purpose.

Hope this will help you!

于 2017-03-30T06:28:02.520 に答える