【发布时间】:2015-06-06 07:49:41
【问题描述】:
我已将我的数据库文件 (.mdf) 放入 bin\debug 文件夹并使用此 app.config:
<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="XtopazConnectionString"
connectionString="Data Source=.;AttachDbFilename=|DataDirectory|\Database\XTOPAZ.mdf;Initial Catalog=XTOPAZ;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
并附加数据库功能:
public static void openConnect()
{
try
{
if (File.Exists(Application.StartupPath + @"\Database\XTOPAZ.mdf"))
{
if (File.Exists(Application.StartupPath + @"\Database\XTOPAZ_log.ldf")) //delete current ldf file if it existed
{
File.Delete(Application.StartupPath + @"\Database\XTOPAZ_log.ldf");
}
string s = ConfigurationManager.ConnectionStrings["XtopazConnectionString"].ConnectionString;
//Set full permisstion access for database file
DirectoryInfo dInfo = new DirectoryInfo(Application.StartupPath + @"\Database\XTOPAZ.mdf");
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
dInfo.SetAccessControl(dSecurity);
con.ConnectionString = s;
con.Open();
}
else
{
Exception ex;
ex = new Exception("Database file not found");
throw ex;
}
}
catch (Exception ex)
{
MessageBox.Show("Error occured when trying to connect to database\r\nDetail: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
我在 Visual Studio 2012 中使用 InstallShield 创建 setup.exe 并将其安装到其他计算机(在我的 C# 项目中,没有错误),我看到此错误:
我该如何解决这个问题?我已经google了,但我找不到解决方案。
【问题讨论】:
-
您在连接字符串中使用了
Integrated Security=True。我猜您可以使用 Windows 凭据登录数据库,但遇到错误的用户无法使用他们的 Windows 凭据登录。 -
@Smudge202 ,我应该更改
Integrated Security=False吗?
标签: c# sql sql-server-2012