2016-03-27 41 views
0

Görsel stüdyolarda bir veritabanı oluşturmaya çalışıyorum, ancak yapamıyorum. Hata iletisini alıyorum: "Veritabanı açılamıyor" veritabanı1 "oturum açma tarafından isteniyordu. Oturum açma işlemi başarısız oldu. Oturum açma işlemi '123' kullanıcısı için başarısız oldu. Ancak, SQL server stüdyolarında el ile" database1 "oluşturduğumda ve daha sonra bağlanmaya çalışıyorum. C# kodu Veritabanına iyi bağlantı kurabilirim. Her sunucu rolü onay kutusu işaretli sunucu stüdyolarında kimlik 123 ve parola abc ile bir kullanıcı oluşturduk. Ben SQL Express kullanıyorum açıklamalara dayanarak 2012.Program aracılığıyla bir veritabanı oluşturulamıyor

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

Varolmayan bir veritabanı belirtebilirsiniz. Veritabanını oluşturmanız gerekiyorsa, bir 'başlangıç ​​kataloğu 'ya da' veritabanı 'değeri belirtmeyin. Veritabanını başarıyla oluşturduktan sonra veritabanını belirtebilirsiniz. –

+0

SQL'e yeni geliyorum "Database = database1;" bağlantı dizesinden mi? "Veritabanını başarıyla oluşturduktan sonra bunu belirtebildiğimden" tam olarak anlamadım. – Vince

+0

Sevgili @Vince, Lütfen ana kataloğu ilk kataloğunuz olarak kullanmayı düşünün: Veritabanı = master; – mostafa8026

cevap

1

: programlı bir veritabanı oluşturmak için çalışıyorsanız bu durumda bir bağlantı açmalısınız böylece, sen doğmamış veritabanına bağlantı kullanamazsınız böyle master veritabanı, bir şeye:

"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(); 
      } 
     } 

bu yukarıdaki kodu deneyin. Benim için çalışıyor. Veritabanını oluşturmadan önce veritabanı adı vermeyin. Veritabanı bağlantısını başlatmak için veritabanı ana sayfasını kullanın.

İlgili konular