У меня есть приложение winforms для C#, и я хочу установить его на два или более устройства, , но я хочу, чтобы они делили одну и ту же базу данных. Любые советы о том, как это сделать?Подключить одно и то же приложение на разных устройствах в той же базе данных
ответ
Ваш вопрос слишком общий, поэтому я стараюсь дать вам общий ответ.
Возможно, вы пытаетесь создать приложение для большего количества пользователей, которые имеют общую базу данных с данными. Вероятно, лучший выбор - выставить свою общую базу данных на сервере (по назначению - 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();
}
}
im using sql server 2008 –
Это жаль, но что вы спрашиваете? что вы пробовали? – dougajmcdonald
У меня есть приложение, использующее db, и я хочу запускать его на нескольких устройствах, но я хочу, чтобы приложение на любом устройстве делилось одним db, так что когда какой-либо из любого устройства вносит изменения в другое приложение на других устройствах, см. db меняет. Я понятия не имею, как это сделать –
Итак, что вы пробовали? – dougajmcdonald