C# 使用脚本创建数据库

标签 c# sql sql-server

我喜欢在下面的代码中使用 FILENAME 参数,而不是 N'D:\DBName.mdf' 和 N'D:\DBName.ldf'。

如何在 .sql 文件中更改它以及如何使用参数从 C# 调用它? 谢谢。

SQL 脚本:

CREATE DATABASE [DBName] ON  PRIMARY 
( NAME = N'DBName', FILENAME = N'D:\DBName.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'DBName_log', FILENAME = N'D:\DBName.ldf' , SIZE = 3456KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
END

C#代码

string appPathDB = Path.GetDirectoryName(Application.ExecutablePath) + "\\DBName.mdf";
string appPathLog = Path.GetDirectoryName(Application.ExecutablePath) + "\\DBName_log.ldf";

private void CreateDatabase()
{
   string connection = "Data Source=localhost;Initial Catalog=master;User ID=sa;Password=abcd1234";
   FileInfo file = new FileInfo(Path.GetDirectoryName(Application.ExecutablePath) + "\\DBName.sql");
   string script = file.OpenText().ReadToEnd();
   ExecSql(script, connection, "DBName");
   file.OpenText().Close();
}

public void ExecSql(string sql, string connectionString, string dataBaseNameToPrepend)
{
   using (SqlConnection conn = new SqlConnection(connectionString))
   {
      conn.Open();
      Server server = new Server(new ServerConnection(conn));
      server.ConnectionContext.ExecuteNonQuery(sql);
      server.ConnectionContext.Disconnect();
      server.ConnectionContext.ExecuteNonQuery(sql);
      MessageBox.Show("DB Uploaded.");
   }
}

最佳答案

对脚本文件进行以下更改并保存。

CREATE DATABASE [DBName] ON  PRIMARY 
( NAME = N'DBName', FILENAME = N'DB_NAME_MDF' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'DBName_log', FILENAME = N'DB_NAME_LDF' , SIZE = 3456KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
END

将以下行添加到您的代码中。

private void CreateDatabase()
    {
        string connection = "Data Source=localhost;Initial Catalog=master;User ID=sa;Password=abcd1234";
        FileInfo file = new FileInfo(Path.GetDirectoryName(Application.ExecutablePath) + "\\DBName.sql");
        string script = file.OpenText().ReadToEnd();
        script = script.Replace("DB_NAME_MDF", appPathDB).Replace("DB_NAME_LDF", appPathLog);
        ExecSql(script, connection, "DBName");
        file.OpenText().Close();
    }

关于C# 使用脚本创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10493565/

相关文章:

c# - 蛮力 7z 密码测试

c# - 锦标赛分组算法(NCAA 等)

c# - 内容文件夹内文件的路径 (ASP.NET MVC)

php - 一般错误 : 1364 Field 'identifier' doesn't have a default value

sql - 在 postgresql 中连接

sql-server - 使用 EXPLAIN 命令验证 CREATE TABLE DDL 的语法

sql-server - 如何在没有配置外部表权限的情况下加入多个azure数据库?

java - 使用 Mac 地址从 PC 向 Android 发送字符串消息

mysql - 在哪里放置外键以获得最佳数据库设计?

sql-server - SQL DMV 将索引使用链接到存储过程使用