Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C#] Errore OleDbCommand.ExecuteReader()

    Sapreste dirmi a cosa è dovuto questo errore?
    Ho controllato e la connessione OleDBConnection è aperta. Metto una query SQL in OleDBCommand e evoco la funzione ExecuteReader e mi da questo errore... Sto sbattendo la testa già da 2 giorni.

    System.Data.OleDb.OleDbException: Nessun valore specificato per alcuni parametri necessari.
    in System.Data.OleDb.OleDbCommand.ExecuteCommandTextF orSingleResult(tagDBPARAMS dbParams, Object& executeResult)
    in System.Data.OleDb.OleDbCommand.ExecuteCommandText( Object& executeResult)
    in System.Data.OleDb.OleDbCommand.ExecuteCommand(Comm andBehavior behavior, Object& executeResult)
    in System.Data.OleDb.OleDbCommand.ExecuteReaderIntern al(CommandBehavior behavior, String method)
    in System.Data.OleDb.OleDbCommand.ExecuteReader(Comma ndBehavior behavior)
    in System.Data.OleDb.OleDbCommand.ExecuteReader()
    in TravianBot2.DataConnection.ExecuteSelect(String sqlCommand, QueryCallback callback) in C:\Users\Administrator\Desktop\Applications\Databa se\DataConnection.cs:riga 112
    Qualcuno mi può aiutare?

  2. #2
    Posto un può di codice sperando che si riesce a capire meglio l'errore.

    Codice PHP:
    public class DataConnection
    {
        private 
    readonly Queue[list=1m_connectionPool = new Queue[list=1]();
        private 
    string connString;

        public 
    DataConnection(string connString)
        {
            
    this.connString connString;
        }

        private 
    OleDbConnection GetSqlConnection(out bool isNewConnection)
        {
            
    OleDbConnection conn null;
            
    lock (m_connectionPool)
            {
                if (
    m_connectionPool.Count 0)
                {
                    
    conn m_connectionPool.Dequeue();
                }
            }
            if (
    conn == null)
            {
                
    isNewConnection true;
                
    conn = new OleDbConnection(connString);
                
    conn.Open();
            }
            else
            {
                
    isNewConnection false;
            }
            return 
    conn;
        }

        private 
    void ReleaseConnection(OleDbConnection conn)
        {
            
    lock (m_connectionPool)
            {
                
    m_connectionPool.Enqueue(conn);
            }
        }

        public 
    void ExecuteSelect(string sqlCommandQueryCallback callback)
        {
            
    OleDbConnection conn null;
            
    bool repeat false;
            do
            {
                
    bool isNewConnection true;
                try
                {
                    
    conn GetSqlConnection(out isNewConnection);
                    
    OleDbCommand cmd = new OleDbCommand(sqlCommandconn);
                    
    OleDbDataReader reader cmd.ExecuteReader();
                    
    callback(reader);
                    
    reader.Close();
                    
    ReleaseConnection(conn);
                    
    repeat false;
                }
                catch (
    Exception e)
                {
                    if (
    conn != null)
                        
    conn.Close();
                    if (!
    isNewConnection)
                        
    repeat true;
                    
    System.Windows.Forms.MessageBox.Show(e.ToString(), "Error");
                }
            } while (
    repeat);
        }

    Qualche idea?

  3. #3
    Da l'errore sul rigo 54 del codice che ho incollato.
    Cioè su: OleDbDataReader reader = cmd.ExecuteReader();

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il problema non e' nel codice ma nella query contenuta in

    sqlCommand
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Questa è la query SQL:
    Codice PHP:
    SELECT `ID_Account`, `UserName`, `Password`, `Server`, `Tribe`, `KeyFROM `Accounts`; 
    Utilizzo Access come database. Cosa c'è che non va in questa query?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Andriy08
    Questa è la query SQL:
    Codice PHP:
    SELECT `ID_Account`, `UserName`, `Password`, `Server`, `Tribe`, `KeyFROM `Accounts`; 
    Utilizzo Access come database. Cosa c'è che non va in questa query?
    Intanto non utilizzare gli apici. E poi, se questi campi sono tutti quelli presenti nella tabella usa il simbolo *

    SELECT * FROM Accounts
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Il problema è che la query viene generata in automatico.
    Ho creato una classe base, a quale si appoggiano diciamo le classi tabelle, le quali hanno a sua volta le funzioni con dei Attributi che ho creato.
    Quindi la query sql viene generata in questo modo:
    Codice PHP:
    object[] dataTable objectType.GetCustomAttributes(typeof(DataTable), true);
    StringBuilder sb = new StringBuilder("SELECT");

    if (
    topLimit 0)
        
    sb.Append(" TOP " topLimit);

    sb.Append(" `" + (dataTable[0] as DataTable).TableID "`");

    BindingInfo[] bindingInfo GetBindingInfo(objectType);
    for (
    int i 0bindingInfo.Lengthi++)
        
    sb.Append(", `" bindingInfo[i].Member.Name "`");

    sb.Append(" FROM `" + (dataTable[0] as DataTable).TableName "`");

    if (
    whereClause != null && whereClause.Trim().Length 0)
        
    sb.Append(" WHERE " whereClause.Trim());

    sb.Append(';'); 

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Allora, non usare gli apici per racchiudere i nomi dei campi e tabelle ma le parentesi quadre

    [ ]

    La query diventerà

    SELECT [ID_Account], [UserName], [Password], [Server], [Tribe], [Key] FROM [Accounts];
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Ok Provo

  10. #10
    Bene, ho risolto. Che casino ho fatto sul forum. LOL
    Per una query pakka di Access. Sono Abituato con MySQL.

    Grazie oregon dell'aiuto.

    PS. Secondo te è positivo gestire le connessioni in quel modo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.