2015-04-16 2 views
-3

Ошибка подключения Sql начинается в наборе данных DS, как не в состоянии получить данные в форму:Первый шанс, исключение типа «System.Data.SqlClient.SqlException» произошло в System.Data.dll 332

using (SqlConnection con = new SqlConnection("Data Source=c:\\RegistrationMDB.accdb")) 
      { 
       SqlDataAdapter da = new SqlDataAdapter(); 
       DataSet ds = new DataSet(); 
       SqlCommand cmd = new SqlCommand("SELECT ID, PASSWORD FROM Students WHERE ID = @ID OR PASSWORD = @PASSWORD", con); 
       cmd.CommandType = CommandType.Text; 

       cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = id; 
       cmd.Parameters.Add("@PASSWORD", SqlDbType.VarChar).Value = pw; 

       da.SelectCommand = cmd; 
       da.Fill(ds); 
       foreach (DataRow dr in ds.Tables[0].Rows) 
       { 
        iD = (dr["@ID"].ToString()); 
        password = dr["@PASSWORD"].ToString(); 
       } 

       if (iD == id && password == pw) 
       { 
        return true; 
       } 
       else 
       { 
        LogNotification = "ID/Password is incorrect"; 
        return false; 
       } 
      } 

Я получаю ошибки sql при получении логина для работы, как мне заставить ds работать, чтобы позволить мне подключиться к базе данных и войти? ошибка говорит DS не прав, а исключение SQL Server не был пойман

Студент:

class Student : Person 
    { 
     private String iD; 
     private String password; 
     private String eMail; 
     private double gpa; 
     private String message; 


     public Student() : base() 
     { 
      this.iD = ""; 
      this.password = ""; 
      this.eMail = ""; 
      this.gpa = 0; 
     } 
     public Student(String i, String pa, String eM, int gp) : base() 
     { 
      this.iD = i; 
      this.password = pa; 
      this.eMail = eM; 
      this.gpa = gp; 
      InsertDB(); 
     } 
      public Student(String iD) 
     { 
      SelectDB(iD); 
     } 
       //++++++++++++++++ DATABASE Data Elements +++++++++++++++++ 
     public System.Data.OleDb.OleDbDataAdapter OleDbDataAdapter; 
     public System.Data.OleDb.OleDbCommand OleDbSelectCommand; 
     public System.Data.OleDb.OleDbCommand OleDbInsertCommand; 
     public System.Data.OleDb.OleDbCommand OleDbUpdateCommand; 
     public System.Data.OleDb.OleDbCommand OleDbDeleteCommand; 
     public System.Data.OleDb.OleDbConnection OleDbConnection; 
     public string cmd; 

     public void DBSetup(){ 
     // +++++++++++++++++++++++++++ DBSetup function +++++++++++++++++++++++++++ 
     // This DBSetup() method instantiates all the DB objects needed to access a DB, 
     // including OleDbDataAdapter, which contains 4 other objects(OlsDbSelectCommand, 
     // oleDbInsertCommand, oleDbUpdateCommand, oleDbDeleteCommand.) And each 
     // Command object contains a Connection object and an SQL string object. 
      OleDbDataAdapter = new System.Data.OleDb.OleDbDataAdapter(); 
      OleDbSelectCommand = new System.Data.OleDb.OleDbCommand(); 
      OleDbInsertCommand = new System.Data.OleDb.OleDbCommand(); 
      OleDbUpdateCommand = new System.Data.OleDb.OleDbCommand(); 
      OleDbDeleteCommand = new System.Data.OleDb.OleDbCommand(); 
      OleDbConnection = new System.Data.OleDb.OleDbConnection(); 


      OleDbDataAdapter.DeleteCommand = OleDbDeleteCommand; 
      OleDbDataAdapter.InsertCommand = OleDbInsertCommand; 
      OleDbDataAdapter.SelectCommand = OleDbSelectCommand; 
      OleDbDataAdapter.UpdateCommand = OleDbUpdateCommand; 


OleDbConnection.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Reg"+ 
"istry Path=;Jet OLEDB:Database L" + 
"ocking Mode=1;Data Source=c:\\RegistrationMDB.accdb;J" + 
"et OLEDB:Engine Type=5;Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:System datab" + 
"ase=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Mode=S" + 
"hare Deny None;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet " + 
"OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repai" + 
"r=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"; 

     } 

     public void SelectDB(String id) 
     { //++++++++++++++++++++++++++ SELECT +++++++++++++++++++++++++ 
      DBSetup(); 
      cmd = "Select * from Students where ID = " + iD; 
      OleDbDataAdapter.SelectCommand.CommandText = cmd; 
      OleDbDataAdapter.SelectCommand.Connection = OleDbConnection; 
      Console.WriteLine(cmd); 
      try { 
        OleDbConnection.Open(); 
        System.Data.OleDb.OleDbDataReader dr; 
        dr = OleDbDataAdapter.SelectCommand.ExecuteReader(); 

        dr.Read(); 
        id=iD; 
        setPassword(dr.GetValue(1)+""); 
        setEMail(dr.GetValue(2)+""); 

        setGpa(Double.Parse(dr.GetValue(3)+"")); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex); 
      } 
      finally 
      { 
       OleDbConnection.Close(); 
      }      
     } 

     public void InsertDB() { 
     // +++++++++++++++++++++++++++ INSERT +++++++++++++++++++++++++++++++ 

      DBSetup(); 
      cmd = "INSERT into Students values(" + getID() + "," + 
          "'" + getPassword() + "'," + 
          "'" + getEMail() + "'," + 
          "'" + getGpa() + ")"; 

      OleDbDataAdapter.InsertCommand.CommandText = cmd; 
      OleDbDataAdapter.InsertCommand.Connection = OleDbConnection; 
      Console.WriteLine(cmd); 
      try 
      { 
       OleDbConnection.Open(); 
       int n = OleDbDataAdapter.InsertCommand.ExecuteNonQuery(); 
       if (n==1) 
        Console.WriteLine("Data Inserted"); 
       else 
        Console.WriteLine("ERROR: Inserting Data"); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex); 
      } 
      finally 
      { 
       OleDbConnection.Close(); 
      }     
     } 
     public void updateDB() 
     { 
      //++++++++++++++++++++++++++ UPDATE +++++++++++++++++++++++++ 

      cmd = "Update Students set ID = '" + getID() + "'," + 
         "Password = '" + getPassword() + "', " + 
         "Email = '" + getEMail() + "', " + 
         "GPA = " + getGpa(); 

      OleDbDataAdapter.UpdateCommand.CommandText = cmd; 
      OleDbDataAdapter.UpdateCommand.Connection = OleDbConnection; 
      Console.WriteLine(cmd); 
      try 
      { 
       OleDbConnection.Open(); 
       int n = OleDbDataAdapter.UpdateCommand.ExecuteNonQuery(); 
       if (n==1) 
        Console.WriteLine("Data Updated"); 
       else 
        Console.WriteLine("ERROR: Updating Data"); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex); 
      } 
      finally 
      { 
       OleDbConnection.Close(); 
      }      
     } 

     public void deleteDB() 
     { 
      //++++++++++++++++++++++++++ DELETE +++++++++++++++++++++++++ 

      cmd = "Delete from Students where ID = " + getID(); 
      OleDbDataAdapter.DeleteCommand.CommandText = cmd; 
      OleDbDataAdapter.DeleteCommand.Connection = OleDbConnection; 
      Console.WriteLine(cmd); 
      try 
      { 
       OleDbConnection.Open(); 
       int n = OleDbDataAdapter.DeleteCommand.ExecuteNonQuery(); 
       if (n==1) 
        Console.WriteLine("Data Deleted"); 
       else 
        Console.WriteLine("ERROR: Deleting Data"); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex); 
      } 
      finally 
      { 
       OleDbConnection.Close(); 
      }      
     } 





     public void setID(String iD) 
     { 
      this.iD = iD; 
     } 

     public void setPassword(String password) 
     { 
      this.password = password; 
     } 


     public void setEMail(String eMail) 
     { 
      this.eMail = eMail; 
     } 
     public void setGpa(double gpa) 
     { 
      this.gpa = gpa; 
     } 

     public String getID() 
     { 
      return iD; 
     } 


     public String getPassword() 
     { 
      return password; 
     } 



     public String getEMail() 
     { 
      return eMail; 
     } 

     public double getGpa() 
     { 
      return gpa; 
     } 
     public String getMessage() 
     { 
      return this.message; 
     } 
     public string LogNotification { get; set; } 
     public bool ConfirmLogin(string id, string pw) 
     { 
      using (SqlConnection con = new SqlConnection("Data Source=c:\\RegistrationMDB.accdb")) 
      { 
       SqlDataAdapter da = new SqlDataAdapter(); 
       DataSet ds = new DataSet(); 
       SqlCommand cmd = new SqlCommand("SELECT ID, PASSWORD FROM Students WHERE ID = @ID OR PASSWORD = @PASSWORD", con); 
       cmd.CommandType = CommandType.StoredProcedure; 

       cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = id; 
       cmd.Parameters.Add("@PASSWORD", SqlDbType.VarChar).Value = pw; 

       da.SelectCommand = cmd; 
       da.Fill(ds); 
       foreach (DataRow dr in ds.Tables[0].Rows) 
       { 
        iD = (dr["@ID"].ToString()); 
        password = dr["@PASSWORD"].ToString(); 
       } 

       if (iD == id && password == pw) 
       { 
        return true; 
       } 
       else 
       { 
        LogNotification = "ID/Password is incorrect"; 
        return false; 
       } 
      } 
     } 

     public void displays(){ 
     System.Console.WriteLine("ID = "+ getID()); 
     System.Console.WriteLine("Password = "+ getPassword()); 
     System.Console.WriteLine("Email = " + getEMail()); 
     System.Console.WriteLine("GPA = " + getGpa()); 

    } 


    } 

форма StudentLogin:

namespace Students 
{ 
    public partial class StudentLogin : Form 
    { 
     public StudentLogin() 
     { 
      InitializeComponent(); 
     } 

     private void Logingo_Click(object sender, EventArgs e) 
     { 
       Student st = new Student(); 
     if(st.ConfirmLogin(textBox1.Text,textBox2.Text)==false){ 
       MessageBox.Show(st.LogNotification); 
     } 
     else{} 
     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 
    } 
} 
+0

Прочитать сообщение об исключении. – SLaks

+0

** Не храните пароли в текстовом формате **. – SLaks

+0

'if (iD == id && password == pw)' вы действительно не доверяете себе? – Steve

ответ

0

Это не поймать SQLException из попытке поймать , Для печати исключения используйте SQLException в вашем catch.

0

Ошибка:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.

появляется, когда ваше приложение не может взаимодействовать с базой данных. Вероятно, это ваш ConnectionString, на который вы должны обратить внимание.

Смежные вопросы