C# Abfrage sybase verwenden Sybase.Data.AseClient.dll

Ich importieren Sybase.Data.AseClient.dll in mein C# - Projekt für die Verbindung zu einer sybase-Datenbank und die Abfrage so etwas wie dieses

private DataSet query(string jjoprid)
{
    string queryStr = "select oprid, oprname,orgid,lastmodified from                SA_CXTC_OPRINFO where oprid = \"" + jjoprid + "\";";
    DataSet ds ;
    try
    {
        conn = new AseConnection("Data Source=192.168.100.251;database=thq;" +
            "charset=cp936;Port=7000;UID=snhqdbo;PWD=janhq@ary");
        command = new AseCommand(queryStr, conn);
        adapter = new AseDataAdapter(command);
        ds = new DataSet();
        adapter.Fill(ds);                
    }
    catch (AseException ex)
    {
        Console.WriteLine(ex.Message);
        return null;
    }
    finally
    {
        if (null != conn)
            conn.Close();
    }    
    return ds ;
}

Seltsam, bekam ich eine Ausnahme wie diese

fangen Sybase.Daten.AseClient.AseException 
Message= " Character set conversion ist nicht verfügbar zwischen client-Zeichensatz 'cp936' - und server-Zeichensatz 'iso_1'. 

Source=Sybase.Daten.AseClient 
StackTrace: 
bei Sybase.Daten.AseClient.AseConnectionImpl.CheckResult(Int32 res, Boolean forOpen) 
bei Sybase.Daten.AseClient.AseConnectionImpl.Öffnen Sie() 
bei Sybase.Daten.AseClient.AseConnectionPool.GetConnection(AseConnection conn) 
bei Sybase.Daten.AseClient.AseConnectionPoolManager.GetConnection(String connectionString, AseConnection conn) 
bei Sybase.Daten.AseClient.AseConnection.Öffnen Sie() 
System.Daten.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand-Befehl, CommandBehavior-Verhalten) 
System.Daten.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand-Befehl, CommandBehavior-Verhalten) 
System.Daten.Common.DbDataAdapter.Fill(DataSet dataSet) 
bei CXTC运维.Form1.query(String jjoprid) Lage d:\Documents und Einstellungen\11075452\My Documents\Visual Studio 2010\Projects\CXTC运维\CXTC运维\Form1.cs:行号 41 
InnerException: 

Es zeigt, dass der Konflikt zwischen client-Zeichensatz und server-Zeichen, aber ich weiß nicht, wie dieses problem zu lösen, wer kann mir helfen ?

Danke Parado, ich folgte Ihrem Rat, und habe diese

 
fangen Sybase.Daten.AseClient.AseException 
Message=Versuchen zu lokalisieren Eintrag in sysdatabases für die Datenbank 'thq' von Namen ist fehlgeschlagen - kein Eintrag gefunden unter diesem Namen. Stellen Sie sicher, dass der eingegebene name korrekt. 

Source=Sybase.Daten.AseClient 
StackTrace: 
bei Sybase.Daten.AseClient.AseConnectionImpl.CheckResult(Int32 res, Boolean forOpen) 
bei Sybase.Daten.AseClient.AseConnectionImpl.Öffnen Sie() 
bei Sybase.Daten.AseClient.AseConnectionPool.GetConnection(AseConnection conn) 
bei Sybase.Daten.AseClient.AseConnectionPoolManager.GetConnection(String connectionString, AseConnection conn) 
bei Sybase.Daten.AseClient.AseConnection.Öffnen Sie() 
System.Daten.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand-Befehl, CommandBehavior-Verhalten) 
System.Daten.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand-Befehl, CommandBehavior-Verhalten) 
System.Daten.Common.DbDataAdapter.Fill(DataSet dataSet) 
bei CXTC运维.Form 
InformationsquelleAutor Alkali | 2013-07-23
Schreibe einen Kommentar