2016-07-12 3 views
0

그래서 나는 내 코드를 고수하고 철저히 답을 찾아 보았습니다.하나의 선택 쿼리에서 여러 결과 얻기

약 52806 개의 결과를 가져 오는 select 문이 하나 있습니다.

내가 쿼리에서 실행 한 결과를 변수에 넣은 다음 PDF 파일에 넣습니다. 첫 번째 결과 이후에는 작동하지 않습니다. 나는 결과를 내 pdf 파일에 넣고 다음 결과로 간다.

누구든지 이드가 나를 도와 주면 많은 도움이됩니다.

여기 내 코드입니다. 나쁜 행동을 미리 미안해.

private void CreateBtn_Click(object sender, EventArgs e) 
    { 

     try 
     { 
      make_pdf(); 
     } 
     catch (Exception exe) 
     { 
      MessageBox.Show("failed"); 
     } 

    } 

    public static void make_pdf() 
     { 
     string Contact = ""; 
     string emailAddress = ""; 
     string Tel = ""; 
     string InvoiceDate = ""; 
     string address = ""; 
     string Reference = ""; 
     string AccountNo = ""; 
     string Debit = ""; 
     string Credit = ""; 
     string refnum = ""; 





     string connetionString = null; 
     MySqlConnection cnn; 
     connetionString = "server=********;user id=web_support;database=users;password=!w3b_supp0rt~;persistsecurityinfo=True"; 
     cnn = new MySqlConnection(connetionString); 
     try 
     { 
      cnn.Open(); 
      // MessageBox.Show("Connection Open ! "); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Can not open connection ! "); 
     } 


     try 
     { 
      MySqlDataReader reader = null; 
      string selectCmd = "SELECT accounting.code,users.curr_email , users.physicaddr ,accounting.date , accounting.refnum , users.telephone , accounting.debit , accounting.acc_pdf, accounting.credit, accounting.reference, users.contact, accounting.transnum FROM accounting INNER JOIN users ON accounting.code = users.code WHERE(accounting.transtype = 1)"; 

      MySqlCommand command = new MySqlCommand(selectCmd, cnn); 
      reader = command.ExecuteReader(); 

      while (reader.Read()) 
      { 
       if (reader.HasRows) 
       { 

        //get account number 
        AccountNo = reader["code"].ToString(); 
        //get emailaddress 
        emailAddress = reader["curr_email"].ToString(); 

        //get Contact Name 
        Contact = reader["contact"].ToString(); 

        //get telephone number 
        Tel = reader["telephone"].ToString(); 

        //Get Date 
        InvoiceDate = reader["date"].ToString(); 

        //Get reference 
        Reference = reader["reference"].ToString(); 

        //Get Address 
        address = reader["physicaddr"].ToString(); 

        //Get Debit 
        Debit = reader["debit"].ToString(); 

        //Get Credit 
        Credit = reader["credit"].ToString(); 

        //Get Refnum 
        refnum = reader["refnum"].ToString(); 


        // MessageBox.Show(address+" "+Reference+" "+InvoiceDate+" "+emailAddress+" "+AccountNo+" "+Contact); 


        // Make The PDF File 
        Document NewDoc = new Document(iTextSharp.text.PageSize.A4, 0, 0, 0, 0); 
        PdfWriter pdfwri = PdfWriter.GetInstance(NewDoc, new FileStream("text.pdf", FileMode.Create)); 

        NewDoc.Open(); 

        iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance("intsa_header_small.jpg"); 
        // Paragraph par = new Paragraph("Everything is working"); 

        //Account List 
        List AccountNolist = new List(List.UNORDERED); 
        AccountNolist.SetListSymbol(""); 
        AccountNolist.IndentationLeft = 300f; 
        AccountNolist.Add(new ListItem("AccountNo " + AccountNo)); 

        // AddressList 
        List AddressList = new List(List.UNORDERED); 
        AddressList.SetListSymbol(""); 
        AddressList.IndentationLeft = 300f; 
        AddressList.Add(new ListItem("Address: " + address)); 
        #region Emailaddresslist 
        //EmailAddressList 
        List emailAddresslist = new List(List.UNORDERED); 
        emailAddresslist.SetListSymbol(""); 
        emailAddresslist.IndentationLeft = 300f; 
        emailAddresslist.Add(new ListItem("Email address: " + emailAddress)); 
        #endregion 
        //ContactList 
        List Contactlist = new List(List.UNORDERED); 
        Contactlist.SetListSymbol(""); 
        Contactlist.IndentationLeft = 300f; 
        Contactlist.Add(new ListItem("Contact: " + Contact)); 

        //TelephoneList 
        List Telephonelist = new List(List.UNORDERED); 
        Telephonelist.SetListSymbol(""); 
        Telephonelist.IndentationLeft = 300f; 
        Telephonelist.Add(new ListItem("Tel: " + Tel)); 

        // Make a Table 


        PdfPTable General_Table = new PdfPTable(1); 
        General_Table.SpacingBefore = 50f; 
        General_Table.SpacingAfter = 50f; 

        PdfPCell Caption = new PdfPCell(new Phrase("Description")); 

        PdfPCell Body = new PdfPCell(new Phrase("  " + refnum + " " + Reference + " Debit: " + Debit + " Credit: " + Credit)); 
        Body.HorizontalAlignment = Element.ALIGN_RIGHT; 

        Caption.Colspan = 0; 
        Caption.HorizontalAlignment = 1; 
        General_Table.AddCell(Caption); 
        General_Table.AddCell(Body); 


        // NewDoc.Add(par); 

        //add Image to pdf 
        NewDoc.Add(img); 
        //add accountNo to pdf 
        NewDoc.Add(AccountNolist); 
        //add Contact to pdf 
        NewDoc.Add(Contactlist); 

        //add emailaddress to pdf 
        NewDoc.Add(emailAddresslist); 
        //add Telephone Number to pdf 
        NewDoc.Add(Telephonelist); 

        //add address to pdf 
        NewDoc.Add(AddressList); 

        NewDoc.Add(General_Table); 

        //save Pdf 
        NewDoc.Close(); 




       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
+0

연결 문자열에서 서버 이름을 제거하고 암호를 잊어 버렸습니다. 축하해! 이제 해커는 서버를 찾을 필요가 있으며 이미 자격 증명을 가지고 있습니다. 너무 늦기 전에 암호를 변경하는 것이 좋습니다. –

+0

잘 연결하면 내 손님이 될 수 있습니다. 행운을 빌어 서버가 오프라인에서 실행 중입니다. –

+0

해커는 조직 내에서있을 수 있으며 서버가있는 위치를 이미 알고 있습니다. 액세스 권한이있는 유일한 사람이거나 다른 모든 사람이 이미 데이터베이스에 대한 전체 액세스 권한을 갖고 있지 않는 한. –

답변

0

당신이 while 루프에서 PDF 파일을 작성하는 문제는, 당신이 먼저 PDF 파일을 생성해야합니다 있도록 결과 및 붙여 넣기의 모든 통해 다음 루프를 52K PDF 파일을 원하는 생각하지 않는다 파일에 저장하십시오.

편집 : 그럼 다시 루프를 실행하기 전에 로컬 파일 (text.pdf)을 삭제

NewDoc.Close(); 

insert/update PDF to database에 줄을 추가 건의 할 것입니다.

+0

안녕하세요 hynek 답장을 보내 주셔서 감사합니다. 아프다. 하지만 나는 실제로 데이터베이스에 들어가는 52k pdf 파일을 만들기 위해 이것을 만들고 있다고 말해야합니다. –

+0

그럼 while 루프에서 pdf 파일을 만들어야하지만 PDF 파일의 정적 이름을 알아 차렸습니다. 둘 이상의 파일을 원한다면 모든 파일의 이름을 변경해야합니다 (값을 자동 증가시킴으로써 또는 연락처의 이름) –

+0

오케이 당신이 말하는 것을 이해합니다. 각각의 결과가 나오면 pdf 파일을 데이터베이스에 삽입 한 다음 다음 결과로 이동하여 문제를 해결할 수 있다고 생각하십니까? 왜냐하면 나는 쿼리 결과로 pdf 파일을 생성하기를 원하기 때문에 데이터베이스로 업데이트 한 다음 다음 결과로 간다. 아니면 그게 너무 많을까요? –

관련 문제