none
Erro ao inserir dados em banco RRS feed

  • Pergunta

  • Olá,
    Estou tentando selecionar uma coluna de uma base e não estou conseguindo. Na verdade até consigo, mas não consigo converter para String.
    segue o código
                string strConexao = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\glauber.silva\\Documents\\Visual Studio 2010\\Projects\\Visual\\banco\\banco.mdb";
                OleDbConnection conn = new OleDbConnection(strConexao);
    
                conn.Open();
                string command1 = "SELECT MAX (ID) FROM estudo";
                OleDbCommand comm1 = new OleDbCommand(command1, conn);
                OleDbDataReader dr = comm1.ExecuteReader();
    
    
                
                
                 if (dr.HasRows)
                 {
                     
                     while(dr.Read())
                        {
                            Global.Num = dr["ID"].ToString();
                        }
                          
                 }
                    else
                 {
                     MessageBox.Show("Registro nao encontrado");
                 }
          
    
    Abaixo segue o erro de exceção:
    System.IndexOutOfRangeException was unhandled
      Message=ID
      Source=System.Data
      StackTrace:
           em System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
           em System.Data.OleDb.OleDbDataReader.GetOrdinal(String name)
           em System.Data.OleDb.OleDbDataReader.get_Item(String name)
           em Visual.FormEscFase.button1_Click(Object sender, EventArgs e)
           em System.Windows.Forms.Control.OnClick(EventArgs e)
           em System.Windows.Forms.Button.OnClick(EventArgs e)
           em System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
           em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
           em System.Windows.Forms.Control.WndProc(Message& m)
           em System.Windows.Forms.ButtonBase.WndProc(Message& m)
           em System.Windows.Forms.Button.WndProc(Message& m)
           em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           em System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
           em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
           em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
           em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
           em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
           em System.Windows.Forms.Application.Run(Form mainForm)
           em Visual.Programa.Main()
           em System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
           em System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
           em System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
           em System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
           em System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
           em System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
           em System.Activator.CreateInstance(ActivationContext activationContext)
           em Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
           em System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           em System.Threading.ThreadHelper.ThreadStart()
      InnerException: 
    sexta-feira, 9 de dezembro de 2011 17:51

Respostas

  • Mude de:

     string command1 = "SELECT MAX (ID) FROM estudo";

    Para:

     string command1 = "SELECT MAX (ID) ID FROM estudo";

    Isso deve resolver.

    O problema aqui é que, ao usar a função de agregação MAX, a coluna ficou UNNAMED, sem nome, por isso vc deve explicitamente renomea-la.

    Abs.


    HJ
    • Sugerido como Resposta hamiltonj sexta-feira, 9 de dezembro de 2011 18:06
    • Marcado como Resposta Glauber_Silva sexta-feira, 9 de dezembro de 2011 18:38
    sexta-feira, 9 de dezembro de 2011 18:06
  • hamiltonj

    Fiz o que sugeriu, disse que havia operador faltando, então, inclui "AS" antes do segundo ID e deu certo.

     

    Valeu!

     

    • Marcado como Resposta Glauber_Silva sexta-feira, 9 de dezembro de 2011 18:38
    sexta-feira, 9 de dezembro de 2011 18:38

Todas as Respostas

  •  Global.Num = dr["ID"].ToString(); 

    Debuga ai!

    "Desenvolvendo..."
    sexta-feira, 9 de dezembro de 2011 18:02
  • Mude de:

     string command1 = "SELECT MAX (ID) FROM estudo";

    Para:

     string command1 = "SELECT MAX (ID) ID FROM estudo";

    Isso deve resolver.

    O problema aqui é que, ao usar a função de agregação MAX, a coluna ficou UNNAMED, sem nome, por isso vc deve explicitamente renomea-la.

    Abs.


    HJ
    • Sugerido como Resposta hamiltonj sexta-feira, 9 de dezembro de 2011 18:06
    • Marcado como Resposta Glauber_Silva sexta-feira, 9 de dezembro de 2011 18:38
    sexta-feira, 9 de dezembro de 2011 18:06
  • hamiltonj

    Fiz o que sugeriu, disse que havia operador faltando, então, inclui "AS" antes do segundo ID e deu certo.

     

    Valeu!

     

    • Marcado como Resposta Glauber_Silva sexta-feira, 9 de dezembro de 2011 18:38
    sexta-feira, 9 de dezembro de 2011 18:38