如何使用 LocalDB (.MDF) 在其他计算机上制作已发布的应用程序 运行?
How to make a published app run on other computers using a LocalDB (.MDF)?
我在其他计算机上为 运行 开发应用程序时遇到问题。此应用程序使用位于同一项目目录中的本地数据库 ( .mdf )。
当我发布应用程序并在另一台计算机上安装时,它安装正确,但是当我 运行 出现与数据库连接相关的错误时。
下面是app.config
中ConnectionStrings
的代码。
<?xml version="1.0"?>
<configuration>
<system.windows.forms jitDebugging="true" />
<configSections>
</configSections>
<connectionStrings>
<clear />
<add name="ConexaoBD" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\bd_Cadastro.mdf;Integrated Security=True;Connect Timeout=30" providerName="System.Data.SqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
这里是 ConnectionString
用于连接到数据库的 class。
private string str_conexao = ConfigurationManager.ConnectionStrings["ConexaoBD"].ConnectionString;
这是我在另一台计算机上 运行 应用程序时收到的错误消息:
************** Exception Text **************
System.ArgumentException: Invalid value for key 'attachdbfilename'.
at EVO_Next_List.cls_Conexao.ExecutarDataSet(String str_sql)
at EVO_Next_List.frmPrincipal.CarregaRegistros()
at EVO_Next_List.frmPrincipal.frmPrincipal_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at MetroFramework.Forms.MetroForm.OnLoad(EventArgs e)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at MetroFramework.Forms.MetroForm.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
有没有办法让应用程序在任何计算机上识别 .mdf 文件?
您需要使您的数据库在远程计算机上可见,您需要做的就是将 连接字符串 更改为
Data Source=server;Initial Catalog=bd_Cadastro.mdf;Integrated Security=True
您还需要确保用户 运行 该应用程序在您的本地 SQL 中具有有效登录名,否则您需要更改 Integrated Security=True 到
User ID=user;Password=passwd
里面是这样的EVO_Next_List.cls_Conexao.ExecutarDataSet()
public DataSet ExecutarDataSet(string str_sql)
{
SqlConnection Conn = new SqlConnection(); // Faz Conexão;
SqlCommand cmdComando = new SqlCommand(); // Recebe o comando.
SqlDataAdapter DataAdt = new SqlDataAdapter(); // Preenche o DataTable.
DataSet DS = new DataSet();
try
{
Conn = AbrirBanco();
cmdComando.CommandText = str_sql;
cmdComando.CommandType = CommandType.Text;
cmdComando.Connection = Conn;
DataAdt.SelectCommand = cmdComando;
DataAdt.Fill(DS); // Preenche a Datatable
return (DS);
}
catch (Exception Erro)
{ throw Erro; }
finally
{ Conn.Close(); }
}
我在其他计算机上为 运行 开发应用程序时遇到问题。此应用程序使用位于同一项目目录中的本地数据库 ( .mdf )。
当我发布应用程序并在另一台计算机上安装时,它安装正确,但是当我 运行 出现与数据库连接相关的错误时。
下面是app.config
中ConnectionStrings
的代码。
<?xml version="1.0"?>
<configuration>
<system.windows.forms jitDebugging="true" />
<configSections>
</configSections>
<connectionStrings>
<clear />
<add name="ConexaoBD" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\bd_Cadastro.mdf;Integrated Security=True;Connect Timeout=30" providerName="System.Data.SqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
这里是 ConnectionString
用于连接到数据库的 class。
private string str_conexao = ConfigurationManager.ConnectionStrings["ConexaoBD"].ConnectionString;
这是我在另一台计算机上 运行 应用程序时收到的错误消息:
************** Exception Text **************
System.ArgumentException: Invalid value for key 'attachdbfilename'.
at EVO_Next_List.cls_Conexao.ExecutarDataSet(String str_sql)
at EVO_Next_List.frmPrincipal.CarregaRegistros()
at EVO_Next_List.frmPrincipal.frmPrincipal_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at MetroFramework.Forms.MetroForm.OnLoad(EventArgs e)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at MetroFramework.Forms.MetroForm.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
有没有办法让应用程序在任何计算机上识别 .mdf 文件?
您需要使您的数据库在远程计算机上可见,您需要做的就是将 连接字符串 更改为
Data Source=server;Initial Catalog=bd_Cadastro.mdf;Integrated Security=True
您还需要确保用户 运行 该应用程序在您的本地 SQL 中具有有效登录名,否则您需要更改 Integrated Security=True 到
User ID=user;Password=passwd
里面是这样的EVO_Next_List.cls_Conexao.ExecutarDataSet()
public DataSet ExecutarDataSet(string str_sql)
{
SqlConnection Conn = new SqlConnection(); // Faz Conexão;
SqlCommand cmdComando = new SqlCommand(); // Recebe o comando.
SqlDataAdapter DataAdt = new SqlDataAdapter(); // Preenche o DataTable.
DataSet DS = new DataSet();
try
{
Conn = AbrirBanco();
cmdComando.CommandText = str_sql;
cmdComando.CommandType = CommandType.Text;
cmdComando.Connection = Conn;
DataAdt.SelectCommand = cmdComando;
DataAdt.Fill(DS); // Preenche a Datatable
return (DS);
}
catch (Exception Erro)
{ throw Erro; }
finally
{ Conn.Close(); }
}