0

我正在尝试以编程方式创建一个数据库并在其中创建一个表。
这是我的代码:

 string connectionstr = string.Format(@"Data Source=.\sqlexpress;Initial Catalog={0};Integrated Security=True", "books");
        SqlConnection myConn = new SqlConnection(connectionstr);

        DirectoryInfo dir = new DirectoryInfo(@"D:\Data");
        dir.Create();

        string str3 = @"CREATE DATABASE [books] ON  PRIMARY 
        ( NAME = N'books', FILENAME = N'D:\DATA\books.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )   
         LOG ON 
        ( NAME = N'books_log', FILENAME = N'D:\DATA\books_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
        IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY')     
        ALTER DATABASE [books] MODIFY FILEGROUP [PRIMARY] DEFAULT";

        SqlCommand myCommand = new SqlCommand(str3, myConn); 
        myConn.Open();
        myCommand.ExecuteNonQuery();
        myConn.Close();

但我收到错误:

无法打开登录请求的数据库“书籍”。登录失败。用户“Master-PC\Master”登录失败。

我能做些什么来解决这个问题?

4

1 回答 1

5

好吧,阅读您的查询很明显,书籍数据库在连接时不存在。您尝试使用您的查询创建它。
更改连接字符串并连接到“主”数据库

string connectionstr = @"Data Source=.\sqlexpress;Initial Catalog=master;"
                       @"Integrated Security=True";

然后执行您的查询,(这将创建数据库'books'),关闭连接并使用原始的“InitialCatalog=books”字符串重新打开它

于 2013-02-13T11:22:26.200 回答