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 に答える