连接到SQL Server数据库。

4
我最近开始使用VS2008编写C#的asp.net程序,并编写了我的第一个连接数据库的web应用程序。第一个版本运行良好,但是当我对其进行修改后就出现了一些问题。以下是描述情况的示例:
1)正常工作。程序连接到数据库并使用函数DeleteAllRecords()对其执行操作;重要的是我在SQL Server Management Studio中创建了要连接的数据库。
按钮单击事件处理程序的代码如下:
    SqlConnection dbConnection = new SqlConnection("Data Source=.\\SQLEXPRESS;Integrated Security=true");
    try
    {
        dbConnection.Open();
        dbConnection.ChangeDatabase("przemek8");
        SqlCommand myCommand = new SqlCommand("DELETE FROM table8", dbConnection);
        myCommand.ExecuteNonQuery();
    }
    catch (SqlException exception)
    {
        Response.Write("<p>Error code " + exception.Number + ": " + exception.Message + "</p>");
    }
    dbConnection.Close();
} 

2) 第二次我没有使用在SQL SM Studio中创建的数据库,而是从Visual Studio本身添加了一个新的数据库元素(网站 -> 添加新项)。我向该数据库添加了一些字段,并配置了GridView以显示正在工作的数据库。然而,问题在于当我想将Gridview连接到之前在SQL SM Studio中创建的数据库时,它无法正常工作 - 在配置连接时,它不会让我选择数据库文件,提示:

您没有打开此文件的权限。联系所有者或管理员获取权限。

我觉得原因可能很简单,但我无法解决它。

值得注意的是,所有这些数据库文件都是在默认位置C盘中由SQL SM Studio创建的。

3) 由于无法连接到由SQL Server创建的数据库,我继续使用Visual Studio自带的数据库进行操作。它与GridView一起工作,因此我使用了与点1相同的功能来与其交互(删除所有记录),但现在是针对新的数据库。

  SqlConnection dbConnection = new SqlConnection("Data Source=.\\SQLEXPRESS; AttachDbFilename='D:\\WebSite1\\App_Data\\mydtb.mdf'; Integrated Security=true; User Instance=true");
    try
    {
        dbConnection.Open();
        dbConnection.ChangeDatabase("mydtb");
        SqlCommand myCommand = new SqlCommand("DELETE FROM Table1", dbConnection);
        myCommand.ExecuteNonQuery();
    }
    catch (SqlException exception)
    {
        Response.Write("<p>Error code " + exception.Number + ": " + exception.Message + "</p>");
    }
    dbConnection.Close();

它没有连接到那个数据库,错误信息如下:

错误代码911:数据库‘mydtb’不存在。请确保名称输入正确。

我在这个领域是新手,但在这种情况下(连接到在Visual Studio中创建的数据库),数据源是否应该是 Data Source=.\\SQLEXPRESS;,就像在SQL Server Management Studio 中创建数据库时一样?

非常感谢您的任何帮助和建议!ASP.NET兴奋的初学者:-)


1
这可能有助于连接到您的本地数据库:http://msdn.microsoft.com/zh-cn/library/ms171890.aspx - chris_dotnet
2
一个与你的答案无关的提示,你可能想在使用 SQL 连接时考虑 using 语句。请参阅此链接:http://www.codeproject.com/Articles/6564/Understanding-the-using-statement-in-C - liebs19
1
旁注...使用VS 2012...不要从旧的IDE开始学习...节省时间... - Leonardo
真的吗,Leonardo?我开始学习使用VS2008是因为我的老师建议我这样做...我认为毕竟你所编写的代码是相同的,即使使用不同版本的VS,不是吗? - Prz3m3k
@Prz3m3k,代码确实是一样的,但是帮助你提高生产力的工具是不同的...我强烈建议你转换...而且既然你是学术学生(你说你有老师),请检查你的机构是否已经注册了DreamSpark计划(你可以免费获得VS 2012专业版、SQL Server和其他软件!) - Leonardo
是的,我可以免费下载它们;谢谢建议 - 我一定会检查 VS 2012。 - Prz3m3k
2个回答

1
您在连接服务器上的数据库时遇到的问题是由于...
SqlConnection dbConnection = new SqlConnection("Data Source=.\\SQLEXPRESS;Integrated   Security=true");

最好的方法是打开您的Web.config文件,找到代码块,在其中添加与数据库的连接。
例如:
<add name="ConnectionString" connectionString="Data Source=YOUR SERVER;Initial Catalog=YOUR DATABASE;User ID=YOUR USER ID;Password=YOUR PASSWORD" />

那么,每当您需要使用它时,您只需在整个项目中调用连接字符串即可。

另外,关于VS2012。目前很少有公司使用该IDE,因此您最好学习VS 2010,但我同意VS2008现在已经相当过时。


-1

我认为这会有所帮助

SqlConnection dbConnection = new SqlConnection("Data
  Source=.\\SQLEXPRESS;Integrated   Security=true; initial
  catalog=database name; uid=servername ; password=yourpassword");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接