0

我正在创建一个数据库实用程序,但我似乎无法让我的连接字符串正确。

   SqlConnection conn = new SqlConnection();
   conn.ConnectionString =  
        "Data Source=.\\SQLExpress;" +
        "User Instance=true;" +
        "Integrated Security=true;" +
        "AttachDbFilename=|DataDirectory|ConfigurationData.mdf;";

我相信这是正确的格式。至于数据源,我的sql server是运行sql server 2008 R2的SQLExpress。我的数据库名为 ConfigurationData。我错过了什么吗?

当我运行它时,它会打开数据库——我认为它会打开数据库,因为它没有通过异常——但是当我尝试插入表时,它实际上并没有插入它,而是执行了命令。

conn.Open();
        try
        {

          SqlCommand comm = new SqlCommand("INSERT INTO Test " + "(id,number) " + "  VALUES(" + 10 + " , " + 12 + ")", conn);
          comm.ExecuteNonQuery();
            Console.WriteLine("Database is created successfully", "MyProgram");
        }
        catch (Exception ex)
        {

        }
        finally
        {
            if ((conn.State == ConnectionState.Open))
            {
                conn.Close();
            }
        }
4

5 回答 5

1

编辑 只记得我不久前回答了一个类似的问题。一探究竟:

为什么我不能使用 C# 将数据插入本地数据库(SQL 精简版)?

我不认为这是连接字符串的问题。但供您参考,一个很好的参考站点是http://www.connectionstrings.com/sql-server-2008/

您将需要其中之一:

在连接到本地 SQL Server Express 实例时附加位于数据目录中的数据库文件

Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=dbname;
Trusted_Connection=Yes;

在连接到本地 SQL Server Express 实例时附加数据库文件

Server=.\SQLExpress;AttachDbFilename=C:\MyFolder\MyDataFile.mdf;Database=dbname;
Trusted_Connection=Yes;

在本地 SQL Server Express 实例上使用用户实例 用户实例功能在连接期间动态创建一个新的 SQL Server 实例。这仅适用于本地 SQL Server 实例,并且仅适用于通过本地命名管道使用 Windows 身份验证进行连接时。目的是为了能够创建完整权限的 SQL

服务器实例分配给在计算机上具有有限管理权限的用户。

Data Source=.\SQLExpress;Integrated Security=true;
AttachDbFilename=C:\MyFolder\MyDataFile.mdf;User Instance=true;

要使用用户实例功能,您需要在 SQL Server 上启用它。这是通过执行以下命令来完成的:sp_configure 'user instances enabled', '1'。要禁用该功能,请执行 sp_configure 'user instances enabled', '0'。

于 2013-07-16T18:45:49.110 回答
0

一种方法是在 web.config 文件中添加连接字符串,如下所示:

只需单击数据库资源管理器上的数据库属性。在那里,您将在其属性中找到连接字符串。只需将其添加到下面的连接字符串中。

<configuration>
    <connectionStrings>
        <add name="ConnectionName" connectionString="your connection string" providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

然后在页面中您可以将其存储为字符串或直接引用您的连接,如下所示:

Connection con=new SqlConnection();
con.ConnectionString=ConfigurationManager.ConnectionStrings["connString"].ToString();

我怀疑你的插入语句没有正确声明。

试试这个:

SqlCommand comm = new SqlCommand("INSERT INTO Test (id,number) VALUES('10' ,'12')", con);

这就是我的全部...希望它对您有所帮助..

于 2013-07-19T14:07:48.087 回答
0

为什么不只使用 SqlConnectionStringBuilder 类?:

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = @"(local)\SQLExpress";
builder.UserInstance = true;
builder.IntegratedSecurity = true;
builder.AttachDBFilename = "|DataDirectory|ConfigurationData.mdf";
SqlConnection conn = new SqlConnection(builder.ConnectionString());

输出:

    "Data Source=(local)\\SQLExpress;AttachDbFilename=|DataDirectory|ConfigurationData.mdf;Integrated Security=True;User Instance=True"
于 2013-07-16T19:19:36.697 回答
0

尝试(本地)而不是点,点在 Win XP 中无法识别

conn.ConnectionString =  
        "Data Source=(local)\\SQLExpress;" +
        "User Instance=true;" +
        "Integrated Security=true;" +
        "AttachDbFilename=|DataDirectory|ConfigurationData.mdf;";
于 2013-07-16T18:52:43.220 回答
0

你的 SQL 语句也不对,你应该使用参数,但这是你应该有的

SqlCommand comm = new SqlCommand("INSERT INTO Test (id, number)  VALUES('" + 10 + " ', '" + 12 + "')", conn);
于 2013-07-16T19:20:47.030 回答