简而言之.我有两个简单的助手:
private SqlCommand CreateCommand(string text)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
cmd.CommandType = CommandType.Text;
cmd.CommandText = text;
return cmd;
}
void SetParameter(SqlCommand cmd, string p, string dbName)
{
cmd.Parameters.Add(p, SqlDbType.NVarChar);
cmd.Parameters[p].Value = dbName;
}
Run Code Online (Sandbox Code Playgroud)
这执行OK:
var cmd = CreateCommand("CREATE DATABASE Demo "+
@"ON (FILENAME = N'c:\demo_data.mdf') "+
@"LOG ON (FILENAME = N'c:\demo_data.mdf.LDF') "+
"FOR ATTACH " +
"GO");
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
但这不是:
string dataBaseAttachText = "CREATE DATABASE @dbname " +
"ON (FILENAME = @filename) " +
"LOG ON (FILENAME …Run Code Online (Sandbox Code Playgroud) 我正在尝试为连接到SQL Server以实现持久性的代码编写一些单元测试,但我希望能够通过将其指向SQL Server实例来运行我的单元测试,并让测试创建自己的数据库运行测试,因此在每次测试之后,它可以在下一次测试重新创建之前删除数据库然后进行设置,因此我知道上一次测试中没有遗留的遗留数据或结构影响下一次测试.