2016-03-27 15 views
0

Ich versuche, eine Datenbank über Visual Studios zu erstellen, jedoch kann ich nicht. Ich bekomme die Fehlermeldung: "Kann Datenbank" database1 "nicht öffnen von der Anmeldung angefordert. Die Anmeldung fehlgeschlagen. Anmeldung fehlgeschlagen für Benutzer '123'" Allerdings wenn ich manuell "database1" in SQL Server Studios erstellen und dann versuchen, eine Verbindung über es herzustellen C# code Ich kann eine Verbindung zur Datenbank herstellen. Ich habe einen Benutzer mit der ID 123 und dem Kennwort abc in den Serverstudios mit jedem gesetzten Kontrollkästchen der Serverrolle hergestellt. Ich bin mit SQL Express 2012.Ich kann eine Datenbank programmgesteuert nicht erstellen

private void sQLToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     bool create_db = false; 
     bool create_table = false; 


     SqlConnection myConnection = new SqlConnection("Server = localhost; Database = database1; User Id = 123; Password = abc;"); 
     try 
     { 

      myConnection.Open(); 
      MessageBox.Show("We were able to connect to the database!", "Success!"); 
      create_table = true; 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.ToString()); 
      create_db = true; 
      MessageBox.Show("There is no database. We will create one.", "No Database Found."); 
     } 

     // For creating the database if not found 
     if (create_db == true) 
     { 
      String str; 
      SqlConnection myConn = new SqlConnection("Server = localhost; Database = database1; User Id = 123; Password = abc;"); 

      str = "CREATE DATABASE database1"; 

      SqlCommand myCommand = new SqlCommand(str, myConn); 
      try 
      { 
       myConn.Open(); 
       myCommand.ExecuteNonQuery(); 
       MessageBox.Show("DataBase is Created Successfully", "Creation", MessageBoxButtons.OK, MessageBoxIcon.Information); 
       create_db = false; 
      } 
      catch (System.Exception ex) 
      { 
       MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information); 
      } 
      finally 
      { 
       if (myConn.State == ConnectionState.Open) 
       { 
        myConn.Close(); 
       } 
      } 
     } 
+0

Sie können keine Datenbank angeben, die nicht existiert. Wenn Sie die Datenbank erstellen müssen, geben Sie keinen "initial catalog" - oder "database" -Wert an. Nachdem Sie die Datenbank erfolgreich erstellt haben, können Sie die Datenbank angeben. –

+0

Ich bin neu in SQL ist es so einfach wie Entfernen von "Database = database1;" aus der Verbindungszeichenfolge? Ich verstehe nicht vollständig "Nachdem Sie die Datenbank erfolgreich erstellt haben, kann ich sie angeben." – Vince

+0

Sehr geehrte @Vince, Bitte beachten Sie, Master-Datenbank als Ihren ursprünglichen Katalog verwenden, etwa so: Database = Master; – mostafa8026

Antwort

1

basierend auf Kommentare: wenn Sie eine Datenbank programmatisch zu erstellen versuchen, Sie nicht eine Verbindung zu einem ungeborenen Datenbank, so dass in dieser Situation verwenden, können Sie eine Verbindung öffnen müssen zu master Datenbank, so ähnlich:

"Server = localhost; Database = master; User Id = 123; Password = abc;" 
0
 String str; 
     SqlConnection myConn = new SqlConnection("Server=localhost;User Id = 123; Password = abc;database=master"); 

     str = "CREATE DATABASE database1"; 

     SqlCommand myCommand = new SqlCommand(str, myConn); 
     try 
     { 
      myConn.Open(); 
      myCommand.ExecuteNonQuery(); 
      MessageBox.Show("DataBase is Created Successfully", "Creation", MessageBoxButtons.OK, MessageBoxIcon.Information); 

     } 
     catch (System.Exception ex) 
     { 
      MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information); 
     } 
     finally 
     { 
      if (myConn.State == ConnectionState.Open) 
      { 
       myConn.Close(); 
      } 
     } 

Bitte versuchen Sie diesen oben genannten Code. Es funktioniert für mich. Geben Sie keinen Datenbanknamen, bevor Sie die Datenbank erstellen. Verwenden Sie den Datenbankmaster zum Initialisieren der Datenbankverbindung.

Verwandte Themen