我是 .NET 新手,遇到了困难。我正在用 C# 编写代码来访问 Microsoft SQL Server 2008。这是我的 app.config 文件中的代码
<configuration>
<appSettings>
<add key="provider" value="System.Data.SqlClient" />
</appSettings>
<connectionStrings>
<add name ="AutoLotSqlProvider" connectionString =
"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\AutoLot.mdf"/>
<add name ="AutoLotOleDbProvider" connectionString =
"Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\AutoLot.mdf"/>
</connectionStrings>
</configuration>
当我调试 C# 程序时,我收到此错误消息:
System.Data.SqlClient.SqlException { Login failed for user "." }
我在数据库中找不到用户名
这是我的程序代码:
public class Program
{
static void Main(string[] args)
{
// Get Connection string/provider from *.config.
Console.WriteLine("***** Fun with Data Provider Factories *****\n");
string dp = ConfigurationManager.AppSettings["provider"];
string cnStr = ConfigurationManager.ConnectionStrings["AutoLotSqlProvider"].ConnectionString;
// Get the factory provider.
DbProviderFactory df = DbProviderFactories.GetFactory(dp);
// Now make connection object.
using (DbConnection cn = df.CreateConnection())
{
Console.WriteLine("Your connection object is a: {0}", cn.GetType().Name);
cn.ConnectionString = cnStr;
cn.Open();
if (cn is SqlConnection)
{
// Print out which version of SQL Server is used.
Console.WriteLine(((SqlConnection)cn).ServerVersion);
}
// Make command object.
DbCommand cmd = df.CreateCommand();
Console.WriteLine("Your command object is a: {0}", cmd.GetType().Name);
cmd.Connection = cn;
cmd.CommandText = "Select * From Inventory";
// Print out data with data reader.
using (DbDataReader dr = cmd.ExecuteReader())
{
Console.WriteLine("Your data reader object is a: {0}", dr.GetType().Name);
Console.WriteLine("\n***** Current Inventory *****");
while (dr.Read())
Console.WriteLine("-> Car #{0} is a {1}.",
dr["CarID"], dr["Make"].ToString());
}
}
}
}
最佳答案
在连接字符串中,您尚未指定是需要 Windows 身份验证还是 SQL 身份验证。对于 SQL 身份验证,它应该是(显然用您的用户名和密码替换 x 和 y):
<add name ="AutoLotSqlProvider" connectionString =
"Data Source=.\SQLEXPRESS;User ID=x;Password=y;AttachDbFilename=C:\...\AutoLot.mdf"/>
对于 Windows 身份验证,它应该是:
<add name ="AutoLotSqlProvider" connectionString =
"Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDbFilename=C:\...\AutoLot.mdf"/>
关于c# - 无法连接到 SQL Server : "Login failed for user ".”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217472/