2013-09-04 1 views
1

У меня есть приложение winforms для C#, и я хочу установить его на два или более устройства, , но я хочу, чтобы они делили одну и ту же базу данных. Любые советы о том, как это сделать?Подключить одно и то же приложение на разных устройствах в той же базе данных

+1

Это жаль, но что вы спрашиваете? что вы пробовали? – dougajmcdonald

+0

У меня есть приложение, использующее db, и я хочу запускать его на нескольких устройствах, но я хочу, чтобы приложение на любом устройстве делилось одним db, так что когда какой-либо из любого устройства вносит изменения в другое приложение на других устройствах, см. db меняет. Я понятия не имею, как это сделать –

+0

Итак, что вы пробовали? – dougajmcdonald

ответ

1

Ваш вопрос слишком общий, поэтому я стараюсь дать вам общий ответ.

Возможно, вы пытаетесь создать приложение для большего количества пользователей, которые имеют общую базу данных с данными. Вероятно, лучший выбор - выставить свою общую базу данных на сервере (по назначению - lan или wan) и подключиться к ней с каждого устройства.

Вы должны упомянуть, которые Db вы используете, например, MySQL, MSSQL, ...

Другое дело, если вы хотите иметь один децибел на каждом устройстве, которые измененную офф-лайн и синхронизируются через определенные интервалы времени но я не знаю, что это хороший способ решить эту ситуацию.

Я обновлю после предоставления дополнительной информации.

EDIT: Первое, что вам нужно - публичный сервер MSSQL, поэтому приложение будет запущено с устройства, которое сможет пинговать сервер MSSQL. Во-вторых, вы создаете соединение с ним из приложения, я предоставляю вам образец, вы должны изменить его для наилучшей цели в своей ситуации (например, вместо того, чтобы создавать одно соединение для каждого запроса, вы должны использовать пул соединений, использование транзакций и т. Д. .)

using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Text; 

public class Program 
{ 
    static void Main() 
    { 
     string Query = "SELECT * FROM [MyTable]"; 

     //db connection config 
     DbConfigInfo Config = new DbConfigInfo() 
            { 
             ServerAddress = "MyServer", 
             DbName = "MyDb", 
             TrustedConnection = true 
            }; 

     //db adapter for communication 
     DbAdapter Adapter = new DbAdapter() 
           { 
            DbConfig = Config 
           }; 

     //output with data 
     DataTable MyDataTable; 
     if (!Adapter.ExecuteSqlCommandAsTable(Query, out MyDataTable)) 
     { 
      Console.WriteLine("Error Occured!"); 
      Console.ReadLine(); 
      return; 
     } 

     //do actions with your DataTable 
    } 
} 

public class DbAdapter 
{ 
    //keeps connection info 
    public DbConfigInfo DbConfig { get; set; } 

    public bool ExecuteSqlCommandAsTable(string CmdText, out DataTable ResultTable) 
    { 
     ResultTable = null; 

     try 
     { 
      using (SqlConnection Conn = new SqlConnection(DbConfig.GetConnectionStringForMssql2008())) 
      { 
       SqlCommand Cmd = new SqlCommand(CmdText, Conn); 
       Conn.Open(); 

       SqlDataReader Reader = Cmd.ExecuteReader(); 
       DataTable ReturnValue = new DataTable(); 
       ReturnValue.Load(Reader); 

       ResultTable = ReturnValue; 

       return true; 
      } 
     } 
     catch (Exception e) 
     { 
      return false; 
     } 
    } 
} 

public class DbConfigInfo 
{ 
    public string ServerAddress { get; set; } //address of server - IP address or local name 
    public string DbName { get; set; } //name of database - if you want create new database in query, set this to master 
    public string User { get; set; } //user name - only if winauth is off 
    public string Password { get; set; } //user password - only if winauth is off 
    public bool TrustedConnection { get; set; } //if integrated windows authenticating under currently logged win user should be used 

    //creates conn string from data 
    public string GetConnectionStringForMssql2008() 
    { 
     StringBuilder ConStringBuilder = new StringBuilder(); 

     ConStringBuilder.AppendFormat("Data Source={0};", ServerAddress) 
         .AppendFormat("Initial Catalog={0};", DbName); 

     if (TrustedConnection) 
     { 
      ConStringBuilder.Append("Trusted_Connection=True;"); 
     } 
     else 
     { 
      ConStringBuilder.AppendFormat("User Id={0};", User) 
          .AppendFormat("Password={0};", Password)); 
     } 

     return ConStringBuilder.ToString(); 
    } 
} 
+0

im using sql server 2008 –