[英]C # wpf application with sql server works only on my pc
我有一個帶有 sql server express 的 wpf 應用程序,它在我的電腦上完美運行,但在另一台計算機上它不起作用,我使用的是實體框架,我做了一個方法來獲取 sql server 的服務器名稱和名稱實例並創建數據庫,如果表不存在,我還創建了一個方法來創建表,並使用登錄名和默認密碼進行插入以供用戶訪問 sisitema。
我的連接字符串
<connectionStrings>
<add name="BarberSystem.Properties.Settings.BancoTesteConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=BARBER_DATABASE;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="BARBER_DATABASE" connectionString="data source=.\SQLEXPRESS;initial catalog=BARBER_DATABASE;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
我的方法
public string ConnectionString { get; protected set; }
public SqlServer(string connectionString) {
ConnectionString = connectionString;
}
public static void createIfNotExists(string connectionString) {
new SqlServer(connectionString).createIfNotExists();
}
public void createIfNotExists() {
try {
var connectionStringBuilder = new SqlConnectionStringBuilder(ConnectionString);
var databaseName = connectionStringBuilder.InitialCatalog;
connectionStringBuilder.InitialCatalog = "master";
using (var connection = new SqlConnection(connectionStringBuilder.ToString())) {
connection.Open();
using (var cmd = connection.CreateCommand()) {
cmd.CommandText = string.Format("select * from master.dbo.sysdatabases where name='{0}'", databaseName);
using (var reader = cmd.ExecuteReader()) {
if (reader.HasRows) {
return;
}
reader.Close();
cmd.CommandText = string.Format("CREATE DATABASE {0}", databaseName);
cmd.ExecuteNonQuery();
}
}
}
}
catch (Exception e) {
Log.logException(e);
Log.logMessage(e.Message);
}
}
public static string getServer(){
string servidor = string.Empty;
System.Data.Sql.SqlDataSourceEnumerator instancia = System.Data.Sql.SqlDataSourceEnumerator.Instance;
System.Data.DataTable dados = instancia.GetDataSources();
foreach (DataRow item in dados.Rows) {
servidor = item["ServerName"].ToString();
}
return servidor;
}
public static string getInstance() {
string instancia = string.Empty;
System.Data.Sql.SqlDataSourceEnumerator instance = System.Data.Sql.SqlDataSourceEnumerator.Instance;
System.Data.DataTable dados = instance.GetDataSources();
foreach (DataRow item in dados.Rows) {
instancia = item["InstanceName"].ToString();
}
return instancia;
}
檢查您的防火牆,您必須允許連接到 C:\\Program Files\\Microsoft SQL Server\\MSSQL12.SQLEXPRESS2014\\MSSQL\\Binn\\sqlservr.exe
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.