2010-11-18 17 views
0

Ich habe den folgenden Code, dieser Code mir von Stackoverflow Benutzer auf meinem vorherigen Post empfohlen wurde, seine werfen einige FehlerFehler in asp.net C# -Code

protected void Button2_Click(object sender, EventArgs e) 
    { 
     String a = DropDownList1.SelectedItem.Value; 
     String b = DropDownList3.SelectedItem.Value.PadLeft(3, '0');  
     String c = TextBox2.Text.PadLeft(5,'0').ToString(); 
     String d = TextBox3.Text.ToString(); 
     String digit = a+ b + c + d; 
     string sql = "select * from testcase.main where reg_no =?"; 

try 
     { 
      using (OdbcConnection myConn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=testcase;User=root;Password=root;Option=3;"), 
       OdbcCommand cmd = new OdbcCommand(sql, myConn)) 
      { 
        myConn.Open(); 
        //** 
        cmd.Parameters.AddWithValue("?", digit); 
        using (odbcReader MyReader = cmd.ExecuteReader()) 
        { 
         //** 
         while (MyReader.Read()) 
         { 
          String f = MyReader["pet_name"].ToString(); 
          String g = MyReader["res_name"].ToString(); 

          Label9.Visible = true; 
          Label9.Text = f; 

          Label10.Visible = true; 
          Label10.Text = "VS"; 

          //Label11.Visible = true; 
          Label11.Text = g; 

         } 
        } 
       } 
      } 

     catch (Exception e1) 
     { 
      Response.Write(e1.ToString()); 
     } 
    } 

der Fehler ist:

Error 1 Cannot use more than one type in a for, using, fixed, or declaration statement 

Wie kann ich diesen Fehler beheben? Was ist das Problem in der Deklaration?

+0

Haben Sie den Fehler gelesen? – SLaks

+0

Ja, ich verstehe auch, aber ich weiß nicht, die Lösung – Ishan

Antwort

1

Sie haben zwei in einer using Anweisung gewickelte Variablen:

using (OdbcConnection myConn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=testcase;User=root;Password=root;Option=3;"), 
       OdbcCommand cmd = new OdbcCommand(sql, myConn)) 

sie in zwei verschachtelten using Aussagen trennen.

using(IDisposable obj1) 
{ 
    using(IDisposable obj2) 
    { 
     // code 
    } 
} 
+0

Sie brauchen keine Doppel-Eindruck. – SLaks

+0

mit (OdbcCommand cmd = new OdbcCommand (SQL, myConn)) i auf diese Weise getrennt und jetzt habe ich einen anderen Fehler – Ishan

+0

ERRIR: Der Typ oder Namespace-Name ‚odbcReader‘ konnte nicht gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis ?) – Ishan

1

Sie können keine Variablen von zwei unterschiedlichen Typen in einer einzigen using Anweisung deklarieren.

Sie benötigen die OleDbConnection und OleDbCommand in zwei verschiedenen using Aussagen zu erklären:

using (OdbcConnection myConn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=testcase;User=root;Password=root;Option=3;")) 
using (OdbcCommand cmd = new OdbcCommand(sql, myConn)) { 
    ... 
} 
+0

Vielen Dank.Ich habe das, aber ich bekomme einen anderen Fehler ERROR Der Typ oder Namespace-Name ‚odbcReader‘ konnte nicht gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?) – Ishan

+0

@Abe: Ihre Bearbeitung ist völlig unnötig und schlecht Stil. – SLaks

1

Haben Sie versucht, ohne in dieser Zeile beide myConn und cmd mit:

 using (OdbcConnection myConn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=testcase;User=root;Password=root;Option=3;"), 
      OdbcCommand cmd = new OdbcCommand(sql, myConn)) 
1

Ich glaube, Sie hatten einige Tippfehler. Bitte versuchen Sie Folgendes:

protected void Button2_Click(object sender, EventArgs e) 
{ 
    String a = DropDownList1.SelectedItem.Value; 
    String b = DropDownList3.SelectedItem.Value.PadLeft(3, '0');  
    String c = TextBox2.Text.PadLeft(5,'0').ToString(); 
    String d = TextBox3.Text.ToString(); 
    String digit = a+ b + c + d; 
    string sql = "select * from testcase.main where reg_no =?"; 

    try 
    { 
     using (OdbcConnection myConn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=testcase;User=root;Password=root;Option=3;")) 
     using (OdbcCommand cmd = new OdbcCommand(sql, myConn)) 
     { 
      myConn.Open(); 
      //** 
      cmd.Parameters.AddWithValue("?", digit); 
      using (OdbcDataReader MyReader = cmd.ExecuteReader()) 
      { 
       //** 
       while (MyReader.Read()) 
       { 
        String f = MyReader["pet_name"].ToString(); 
        String g = MyReader["res_name"].ToString(); 

        Label9.Visible = true; 
        Label9.Text = f; 

        Label10.Visible = true; 
        Label10.Text = "VS"; 

        //Label11.Visible = true; 
        Label11.Text = g; 

       } 
      } 
     } 
    } 
    catch (Exception e1) 
    { 
     Response.Write(e1.ToString()); 
    } 
} 
+0

odbcReader ist kein bekannter Typ. OdbcDataReader sollte sein. Sie können Ihre using-Anweisungen auch stapeln, wenn es schwierig ist, sie zu verschachteln. –