我正在创建一个数据库实用程序,我似乎无法使我的连接字符串正确。
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=.\\SQLExpress;" +
"User Instance=true;" +
"Integrated Security=true;" +
"AttachDbFilename=|DataDirectory|ConfigurationData.mdf;";
我相信这是正确的格式。至于数据源,我的sql server是SQLExpress,运行sql server 2008 R2。我的数据库名为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();
}
}
答案 0 :(得分:1)
修改强> 记得有一段时间我回答了类似的问题。看看:
Why can't I insert data into local database (SQL Compact Edition) with C#?
我认为这不是连接字符串问题。但是供您参考,一个好的网站是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'。
答案 1 :(得分:0)
尝试(本地)而不是点,在Win XP中无法识别点
conn.ConnectionString =
"Data Source=(local)\\SQLExpress;" +
"User Instance=true;" +
"Integrated Security=true;" +
"AttachDbFilename=|DataDirectory|ConfigurationData.mdf;";
答案 2 :(得分: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"
答案 3 :(得分:0)
你的SQL语句也不对,你应该使用参数,但这是你应该拥有的
SqlCommand comm = new SqlCommand("INSERT INTO Test (id, number) VALUES('" + 10 + " ', '" + 12 + "')", conn);
答案 4 :(得分:0)
其中一种方法是在web.config文件中添加连接字符串,如下所示:
单击数据库资源管理器上的数据库属性。在那里你会发现其属性中的连接字符串。 Jus将它添加到下面的连接字符串中。
<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);
这一切都来自我...希望它能帮助你......