从ExecuteScalar转换为ExecuteReader

时间:2019-03-21 07:29:43

标签: c# sql wpf

我有这段代码只能打印DataGrid第一行,我需要“打印” 每一行 DataGrid

private void btnPrint_Click(object sender, RoutedEventArgs e)
    {

     try
        {
            //NON FUNZIONA ANCORA COME VORREI PERCHE INNANZITUTTO PRENDE IN CONSIDERAZIONE SOLO I DATI DELLA PRIMA RIGA(LO FA SOLO PERCHE L'HO INGANNATO) 
            //SE NO NON FAREBBE NEANCHE CIO' INOLTRE SE ESISTONO DUE ISTANZE DELLO STESSO ITEM PRENDENDO IN CONSIDERAZIONE SOLO LA PRIMA LA SECONDA PER LUI NON ESISTE.

            if (!Directory.Exists(@"D:/Reports"))//controllo l'esistenza della directory di destinazione dei file generati
            {
                Directory.CreateDirectory(@"D:/Reports");//se non esiste la crea
            }

            string datoR, datoI, datoN;

            //stamp id
            SqlCommand Cmd = new SqlCommand("SELECT tabStoricoDetail.id FROM tabStoreExec JOIN tabStoricoDetail ON tabStoreExec.idSE=tabStoricoDetail.id WHERE tabStoricoDetail.NomeItem LIKE '" + this.txtSrcVR.Text + "'", sqliteCon);

            Cmd.Connection.Open();
            datoI = Cmd.ExecuteScalar().ToString();//cio che mi permette di stampare almeno un valore


            var filename = string.Concat("Filename", DateTime.Now.ToString("ddMMyyHHmmss"), ".txt");//THIS STRING ALLOW TO BUILD FILES EVERY TIME THE USER CHANGE ITEM AND WANTO TO PRINT IT
            TextWriter tw = new StreamWriter("D:/Reports/" + filename, true);//per scrivere id pt1
            tw.WriteLine(datoI);//per scrivere id pt2
            tw.Close();//per scrivere id pt3
            Cmd.Connection.Close();


            //stampa nome
            SqlCommand Cmd1 = new SqlCommand("SELECT tabStoricoDetail.NomeItem FROM tabStoreExec JOIN tabStoricoDetail ON tabStoreExec.idSE=tabStoricoDetail.id WHERE tabStoricoDetail.NomeItem LIKE '" + this.txtSrcVR.Text + "'", sqliteCon);

            Cmd1.Connection.Open();
            datoN = Cmd1.ExecuteScalar().ToString();//cio che mi permette di stampare almeno un valore


            TextWriter tw1 = new StreamWriter("D:/Reports/" + filename, true);//per scrivere id pt1

            tw1.WriteLine(datoN);//per scrivere nome pt2
            tw1.Close();//per scrivere nome pt3
            Cmd1.Connection.Close();


            //stampa result
            SqlCommand Cmd2 = new SqlCommand("SELECT " +
                 "tabStoricoDetail.ResItemDet " +
                 "FROM tabStoreExec " +
                 "JOIN tabStoricoDetail " +
                 "ON tabStoreExec.idSE=tabStoricoDetail.id WHERE tabStoricoDetail.NomeItem LIKE '" + this.txtSrcVR.Text + "'", sqliteCon);
            Cmd2.Connection.Open();
            datoR = Cmd2.ExecuteScalar().ToString();//cio che mi permette di stampare almeno un valore

            TextWriter tw2 = new StreamWriter("D:/Reports/" + filename, true);//per scrivere id pt1

            tw2.WriteLine(datoR);//per scrivere il result pt2
            tw2.Close();//per scrivere il result pt3
            Cmd2.Connection.Close();



            MessageBox.Show("File Created Successfully");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        sqliteCon.Close();
    }

我只想将ExecuteScalar转换为ExecuteReader,但我不知道如何使用ExecuteReader而不是{{1 } s,而不会破坏所有内容。最终目标是将ExecuteScalar中的所有内容打印到文件.txt中 请帮忙 那就是我到达的地方

DataGrid

1 个答案:

答案 0 :(得分:2)

您应该在记录上实现循环

Derby

更多代码:

Oracle