如何使用C#创建SQL Server 2012数据库?

3
我正在使用SQL Server 2012为数据库创建一个系统,但当这个系统在计算机上首次启动时,我希望系统能自动为我创建数据库和表格,而不需要我手动创建。
如何使用C#创建数据库?如何设置连接字符串?因为通常我在连接字符串中设置数据库名称,但现在我需要先创建数据库。

1
过于宽泛。关闭投票。请查看文档 - Federico Berasategui
使用EntityFrameWork的Code First。 - Raimond Kuipers
你是如何发布程序的?你是使用安装程序、click-once,还是只是将编译后的exe文件复制到电脑上?此外,如果你正在使用EntityFramework访问数据库,它内置了生成数据库的功能;但如果你只是使用ADO.net,你可能需要一个安装脚本。 - Scott Chamberlain
@ScottChamberlain 我只想将编译后的exe文件复制到计算机上。 - Lai32290
@RaimondKuipers 我会学习这个,非常感谢。 - Lai32290
@HighCore 我不知道如何做到这一点,但我认为只用 SQL 和 SqlCommand 类就可以实现,如果可能的话,因为我不知道其他解决方案。 - Lai32290
1个回答

6
您可以使用SQL脚本,将数据库名称留空。这里是示例代码:

static void Main(string[] args)
{
  using (var conn = new SqlConnection("data source=DBServer; uid=UserName; pwd=Password;"))
  {
    using (var cmd = new SqlCommand())
    {
      conn.Open();
      cmd.Connection = conn;
      cmd.CommandText = "Create Database NewDB;";
      cmd.ExecuteNonQuery();
      cmd.CommandText = "Use NewDB;CREATE TABLE dbo.Table1 (ID int, Data nvarchar(128));";
      cmd.ExecuteNonQuery();
    }
  }
}

抱歉,我已经尝试过了,但它不起作用。我已经将DBServer更改为localhost,uid=sa; pwd=admin,但它仍然无法正常工作。 - Lai32290
您不能在同一批处理中使用 USE <dbName> 命令和其他命令。我建议在创建数据库后关闭连接,然后在连接字符串中重新打开它并指定新的数据库。 - RBarryYoung
@RBarryYoung - 你的移动 SQL 页面出问题了。 - StingyJack
@RBarryYoung 我在 SQL Server 2008 R2 上尝试过,它可以工作。你有任何参考资料表明不能在同一连接中使用吗? - Antonio Bakula
@AntonioBakula 哎呀,我的错。显然限制只是不能在存储的批处理(比如存储过程)中使用。哇,我这些年一直都弄错了... - RBarryYoung
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接