c# - 动态创建.mdf/.sdf 数据库

标签 c# sql-server database sql-server-ce dynamically-generated

如何使用“代码”创建新的 .mdf/.sdf 数据库?

我试过这个: http://support.microsoft.com/kb/307283

它所做的只是在 ConnectionString 上失败。由于我没有连接到创建文件之前就存在的文件,我如何才能连接到 SQL Express Server 来创建 mdf/sdf 数据库?

我希望能够连接到服务器并创建文件,从那里创建表格等可能会更容易。

有什么建议吗?

最佳答案

public static void CreateSqlDatabase(string filename)
{
    string databaseName = System.IO.Path.GetFileNameWithoutExtension(filename);
    using (var connection = new System.Data.SqlClient.SqlConnection(
        "Data Source=.\\sqlexpress;Initial Catalog=tempdb; Integrated Security=true;User Instance=True;"))
    {
        connection.Open();
        using (var command = connection.CreateCommand())
        {
            command.CommandText =
                String.Format("CREATE DATABASE {0} ON PRIMARY (NAME={0}, FILENAME='{1}')", databaseName, filename);
            command.ExecuteNonQuery();

            command.CommandText =
                String.Format("EXEC sp_detach_db '{0}', 'true'", databaseName);
            command.ExecuteNonQuery();
        }
    }
}

Catalog=tempdb 更改为 Catalog=master,效果很好

示例使用:

var filename = System.IO.Path.Combine("D:\\", "testdb.mdf");
if (!System.IO.File.Exists(filename))
{
    CreateSqlDatabase(filename);
}

关于c# - 动态创建.mdf/.sdf 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481890/

相关文章:

c# - 如何匹配从给定索引开始的正则表达式?

c# - 如何在不更改行的情况下查看 DataGridView 更改

java - Sql Server 连接关闭

mysql - 如何从 select 语句向表中插入信息?

php - 将数据从一个数据库插入另一台服务器上的另一个数据库 - 服务器未链接

c# - 在毛伊岛构建节拍器,但声音播放器不规则并且对计时器不响应。间隔

c# - 如果该行已存在,则获取最后插入的 Id 返回 0

database - SSIS 连接管理器登录失败

sql - 批量加载数据转换错误(截断)

c# - 具有包含 7 亿条记录的表的数据库