1

我正在使用 VS 2008 使用 c# webapp 制作一个 ASP.net,并在我的项目中添加了一个新的 sql 数据库项。我将表格添加到数据库中。在数据库资源管理器中,测试连接有效。我想我有两个问题。一:在应用程序中,如何使用连接字符串连接数据库?或者我应该使用什么连接字符串?第二:如何在数据库中添加用户名和密码?

现在我在 web.config 文件中使用这个连接字符串,但是当我运行应用程序时它超时并说它无法建立连接。错误在 conn.open 行。

add name="ReportsConnectionString" connectionString="Data Source=(local); Initial     Catalog=REPORTS;Integrated Security=True" providerName="System.Data.SqlClient"

我在我的页面的代码隐藏之一中有此代码。

string sqlquery = "SELECT * FROM reportitems";
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ReportsConnectionString"].ConnectionString))
    {
        conn.Open();
        using (SqlCommand comm = new SqlCommand(sqlquery, conn))
        {
            using (SqlDataAdapter adapter = new SqlDataAdapter(comm))
            {
                DataSet ds = new DataSet();
                adapter.Fill(ds, "reportitems");
                DataRowCollection dra = ds.Tables["reportitems"].Rows;

                foreach (DataRow dr in dra)
                {
                    string DRZ = dr[0].ToString();
                     //more stuff here
                 }
            }
         }
     }
4

4 回答 4

3

通常,使用 Data Source 参数的这种语法可以在您的本地 PC 上访问 SqlServer Express yourpcname\SQLEXPRESS。确保启动 Management Studio 并查看服务器名称请求。

对于您问题的安全部分,我想您不想要集成安全选项(Windows 用户),但您想要 SQLServer 用户。在这种情况下,您可以将User IDandPassword参数用于连接字符串:

Data Source=MYPC\SQLEXPRESS;Initial Catalog=REPORTS;User Id=MYNAME;Password=MYPASS;

但是,这仅在您将此用户添加到 SQLServer 后才有效。您可以使用 Management Studio 应用程序的界面,也可以执行这样的脚本

USE [master]
GO
CREATE LOGIN [MYNAME] WITH PASSWORD=N'MYPASS', DEFAULT_DATABASE=[master]
GO
USE [REPORTS]
GO
CREATE USER [MYNAME] FOR LOGIN [MYNAME]
GO
于 2012-05-30T21:54:20.790 回答
1

连接字符串Integrated Security=True部分表示服务器将使用运行站点的应用程序池的凭据,您无需指定用户名或密码。但是,应用程序池身份将需要访问您的数据库。

于 2012-05-30T21:51:58.547 回答
1

访问http://www.connectionstrings.com/以获得有关为各种应用程序设置连接字符串的各种方法的良好入门。这将向您展示为什么 (local) 不起作用但 .\SQLEXPRESS 起作用以及如何向其添加用户名和密码。这是一个来自http://www.connectionstrings.com/sql-server-2008的示例

数据源=myServerAddress;初始目录=myDataBase;用户ID=myUsername;Password=myPassword;

于 2012-05-30T21:54:36.747 回答
1

正如其他人所说,您需要一个运行的 SqlExpress 引擎,因为 .mdf 不是平面文件。它是一个 SQL Server Express 数据库文件,您需要连接到它。

但是没有说的是您的 App_Data 文件夹中的数据库需要附加到 SqlServer 实例。此步骤仅在第一次连接中执行一次。

http://www.connectionstrings.com/sql-server-2008中,您将在“连接到本地 SQL Server Express 实例时附加位于数据目录中的数据库文件”部分中找到一个示例,如下所示:

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

您也可以阅读以下内容:http: //msdn.microsoft.com/en-us/library/ms247257.aspx

我相信你需要运行一些脚本和类似的东西来创建一个用户并在这个数据库中为这个用户分配权限,然后更改连接字符串(一旦连接了数据库),所以我看不到一点将数据库放在 App_Data 文件夹中。我相信如果从一开始就使用 SqlServer 工具创建数据库并从应用程序连接到它应该会更好。

于 2012-05-30T22:18:21.793 回答