2016-06-13 10 views
2

Ich habe ein Problem, wenn ich das Ergebnis einer Abfrage in eine Datei schreibe.Abfrageergebnisse in eine Datei schreiben

string file = @"C:\Users\jakub\Desktop\plik.pdk"; 
FileStream fs = new FileStream(file, FileMode.OpenOrCreate, FileAccess.ReadWrite); 

string connection = "DSN=PervasiveData;Database=BAZA1"; 
string query1 = "SELECT skrot FROM KONTRAHENCI WHERE id = 32"; 

OdbcConnection MyConn = new OdbcConnection(connection); 
OdbcCommand MyCommand = new OdbcCommand(query1, MyConn); 

Und jetzt muss ich in mein Ergebnis der Abfrage schreiben.

Wie kann ich das tun?

+0

, was man die ‚Lösung‘ der Abfrage bedeuten kann .. meinen Sie das Ergebnis? – weirdgyn

+1

Um eine Antwort zu erhalten, sollten Sie zeigen, was Sie versucht haben und - noch wichtiger - dass Sie überhaupt etwas versucht haben. Was ist die eigentliche Frage? Wo steckst du fest? –

+0

laczenie = Verbindung? zapytanie = Frage1 ?? – weirdgyn

Antwort

1

zusammenfassend alles:

string file = @"C:\Users\jakub\Desktop\plik.pdk"; 
using (StreamWriter outputFile = new StreamWriter(file, true)) { 

    string connection = "DSN=PervasiveData;Database=BAZA1"; 
    string query1 = "SELECT skrot FROM KONTRAHENCI WHERE id = 32"; 

    OdbcConnection MyConn = new OdbcConnection(connection); 

    MyConn.Open(); 

    OdbcCommand myCommand = new OdbcCommand(query1, myConn); 

    var result = myCommand.ExecuteScalar(); 

    //Execute command and write output to file 
    if((result !=null) && (result != DBNull.Value)) 
      outputFile.WriteLine(result.ToString()); 
} 
+0

hinzufügen Danke, Mann. Es funktioniert – bengosha

4

Verwenden Sie immer die „using“ Direktive mit Streams zur automatischen Freigabe der Ressource sicherzustellen

string file = @"C:\Users\jakub\Desktop\plik.pdk"; 
using (StreamWriter outputFile = new StreamWriter(file, true)) { 

    string connection = "DSN=PervasiveData;Database=BAZA1"; 
    string query1 = "SELECT skrot FROM KONTRAHENCI WHERE id = 32"; 
    OdbcCommand myCommand = new OdbcCommand(query1, myConn); 

    //Execute command and write output to file 
    outputFile.WriteLine(myCommand.ExecuteScalar().ToString()); 
} 

Sie eine aktive Verbindung (MyConn) für diese, um (abhängig arbeiten müssen, wenn Sie MS SQL Server verwenden Orakel usw.). Sie sollten hier auch das "using" verwenden. Eine einfache Lösung für Oracle wäre:

string yourConnectionString = "DSN=PervasiveData;Database=BAZA1"; // something similar 

using (var conn = new OracleConnection(yourConnectionString)) { 
    conn.open() 
    var myCommand= conn.CreateCommand(); 
    myCommand.CommandText = "SELECT skrot FROM KONTRAHENCI WHERE id = 32"; 

    string file = @"C:\Users\jakub\Desktop\plik.pdk"; 
    using (StreamWriter outputFile = new StreamWriter(file, true)) { 
     //Execute command and write output to file 
     outputFile.WriteLine(myCommand.ExecuteScalar().ToString()); 
    } 
+0

BTW. 'skrot' (= shortname, shorthand) und' kontrahenci' (contrahents) weisen stark darauf hin, dass es sich hierbei um Textergebnisse handelt, keine binären Daten, daher sollte Ihre Antwort in Ordnung sein. Ich weiß zwar nicht, wie es mit Unicode- oder Codepage-Handhabung aussieht. – quetzalcoatl

+0

Ja SO Antworten geben Ihnen nur einen Hinweis in die richtige Richtung. Sie müssen den Code für Ihren Wunsch erweitern/ändern. Wenn diese Antwort Ihr Problem löst, markieren Sie es bitte als Antwort, damit andere es auch finden –

+0

Aber ich versuche, wie Sie zu tun, und Programm geben Sie mir Fehler: "Element ExecuteScalar erfordert eine offene und verfügbare Verbindung (Connection) aktueller Verbindungsstatus: geschlossen " – bengosha