C#连接和附加SQL Server数据库教程

版权申诉
0 下载量 82 浏览量 更新于2024-08-29 收藏 107KB PDF 举报
“c#附加sqlserver数据库.pdf” 在C#中附加SQL Server数据库涉及几个关键知识点,主要包括连接字符串的构建、附加数据库的两种方法以及注意事项。以下是对这些内容的详细说明: 1. 连接字符串的构造 - 当未指定逻辑名时,数据库在SQL Server中将显示为文件的全路径且全部大写。例如,D:MyTest.mdf和D:MyTest.ldf附加后,显示为"D:MYTEST.MDF"。对应的C#连接字符串应如下所示: ``` "DataSource=dsName;AttatchDBFilename=\"D:\\MyTest.mdf\";UserID=id;Password=pw" ``` - 如果指定了逻辑名(例如,aa_LogicName),则在SQL Server中显示为该逻辑名。这时,C#的连接字符串应改为: ``` "DataSource=dsName;AttatchDBFilename=\"D:\\MyTest.mdf\";Initial Catalog=aa_LogicName;UserID=id;Password=pw" ``` 这里,`DataSource`是SQL Server实例的名称,`AttatchDBFilename`指定数据文件的位置,`Initial Catalog`是逻辑数据库名,`UserID`和`Password`是用于身份验证的用户名和密码。 2. 方法一:直接使用连接字符串附加数据库 这种方法通过在C#代码中直接构建连接字符串来附加数据库。例如,可以使用如下的C#代码: ```csharp string connectionString = "DataSource=dsName;AttatchDBFilename=\"D:\\MyTest.mdf\";UserID=id;Password=pw"; SqlConnection connection = new SqlConnection(connectionString); connection.Open(); // 执行附加操作的SQL语句 connection.Close(); ``` 3. 方法二:通过执行SQL命令附加数据库 这种方法通过执行SQL Server的存储过程或动态SQL来附加数据库。例如: ```csharp string dbPath = System.Environment.CurrentDirectory + @"\Demo_Data.MDF"; string logPath = System.Environment.CurrentDirectory + @"\Demo_Log.LDF"; string sql = "exec @dbname='supmark',@filename1='" + dbPath + "',@filename2='" + logPath + "'"; string strCon = "Server=(local);IntegratedSecurity=SSPI;Database=master"; using (SqlConnection cn = new SqlConnection(strCon)) { SqlCommand cmd = new SqlCommand(sql, cn); cn.Open(); cmd.ExecuteNonQuery(); cn.Close(); } ``` 在这个例子中,`exec`命令用于执行一个存储过程,传递数据库名和数据/日志文件的路径。 4. 方法三:使用SqlConnection和SqlCommand对象 这种方法与方法二类似,但可能包含更完整的代码结构,包括异常处理和服务交互等。由于给定的内容不完整,无法提供具体的详细代码示例,但基本思路是创建`SqlConnection`对象,打开连接,然后创建并执行`SqlCommand`对象,附加数据库。 5. 注意事项 - 被附加的数据库名称在附加后不能随意更改,否则可能导致错误。一旦附加,数据库的逻辑名应该保持不变。 - 数据文件(`.mdf`)和日志文件(`.ldf`)的位置必须正确指定,否则附加操作会失败。 - 使用`Integrated Security`(如`IntegratedSecurity=SSPI`)时,C#应用程序将使用运行它的用户的Windows凭据来连接SQL Server,这要求用户具有附加数据库的权限。 - 当数据库已经附加到另一个SQL Server实例时,不能在同一时间附加到另一个实例。 理解这些知识点后,你就能在C#中有效地附加SQL Server数据库了。在实际应用中,请确保根据具体环境和安全策略调整连接字符串和身份验证方式。