2011-05-11 3 views
1

데이터베이스에 레코드를 추가하는 웹 사이트가 있습니다.이 정보는 웹 사이트의 일부인 로그 파일에도 쓰고 있습니다. 정보가 파일에 잘 기록됩니다 ... 제가 가진 유일한 질문은 데이터베이스에 각 입력 정보를 추가하는 것입니다. 정보가 lof 파일에 저장되지만 데이터베이스에 새로 삽입 할 때마다 로그 파일의 기존 레코드를 덮어 쓰고 새로운 삽입으로 바뀌어 항상 하나의 레코드 만 추가됩니다 로그 파일 아마도 조언 ... 이것은 btnClick 이벤트에서 사용한 코드입니다.정보를 텍스트 파일에 추가합니다.

protected void btnSubmitRating_Click1(object sender, EventArgs e) 
{ 
    int rating = 0; 
    try 
    { 
     if (radRating.Items[0].Selected) 
     { 
      rating = 1; 
     } 
     if (radRating.Items[1].Selected) 
     { 
      rating = 2; 
     } 
     else if (radRating.Items[2].Selected) 
     { 
      rating = 3; 
     } 
     else if (radRating.Items[3].Selected) 
     { 
      rating = 4; 
     } 
     else if (radRating.Items[4].Selected) 
     { 
      rating = 5; 
     } 
     FileStream rate = new FileStream(Server.MapPath("~/rateBooks.log"), FileMode.Open, FileAccess.ReadWrite); 
     BufferedStream bs = new BufferedStream(rate); 
     rate.Close(); 


     StreamWriter sw = new StreamWriter(Server.MapPath("~/rateBooks.log")); 
     sw.WriteLine("userName " + txtUserName.Text + " " + "bookTitle " + txtBookTitle.Text + " " + "ISBN " + txtISBN.Text); 
     sw.Close(); 


     Service s = new Service(); 
     s.bookRatedAdd(txtBookTitle.Text, rating, txtReview.Text, txtISBN.Text, txtUserName.Text); 
     btnSubmitRating.Enabled = false; 
     radRating.Enabled = false;    
    } 
    catch (Exception em) 
    { 
     lblError.Text = em.Message; 
     //lblError.Text = "This book has already been reviewed by yourself?"; 
    } 
} 

종류가

답변

5

변경 코드의 전체 블록 :

FileStream rate = new FileStream(Server.MapPath("~/rateBooks.log"), FileMode.Open, FileAccess.ReadWrite); 
BufferedStream bs = new BufferedStream(rate); 
rate.Close(); 

StreamWriter sw = new StreamWriter(Server.MapPath("~/rateBooks.log")); 
sw.WriteLine("userName " + txtUserName.Text + " " + "bookTitle " + txtBookTitle.Text + " " + "ISBN " + txtISBN.Text); 
sw.Close(); 

이 한 줄 사람 :

File.AppendAllText(Server.MapPath("~/rateBooks.log"), "userName " + txtUserName.Text + " " + "bookTitle " + txtBookTitle.Text + " " + "ISBN " + txtISBN.Text + Environment.NewLine); 

주 이제 각 줄에 수동으로 NewLine을 추가합니다.

2

이 읽기에 관하여 :

// Example #4: Append new text to an existing file 
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines2.txt", true)) 
{ 
    file.WriteLine("Fourth line"); 
} 

그래서 당신은 당신의 코드를 사용하여이 작업을 수행 할 수 있습니다 : 그에서 How to: Write to a Text File (C# Programming Guide)

를, 예를 들면 # 4는 파일에 추가하는 방법을 보여줍니다 작동해야합니다 :

StreamWriter sw = new StreamWriter(Server.MapPath("~/rateBooks.log"), true); 
sw.WriteLine("userName " + txtUserName.Text + " " + "bookTitle " + txtBookTitle.Text + " " + "ISBN " + txtISBN.Text); 
sw.Close(); 

편집 : 그냥 그림자 마법사의 답변을 사용, 그것은 훨씬 청소기 ...

+0

'File' 클래스는 정적 헬퍼를 보유하고 있으므로 스트림을 만들 필요가 없습니다. :-) –

+0

@ Shadow Wizard - 예, 동의합니다. 어떻게해야하는지는 모르겠지만 정보를 전달하고 기존 코드를 사소하게 편집 할 수있는 방법을 보여주는 것이 좋습니다. 그래도 최선의 방법을 제시하는 것이 낫습니다 ... –

+0

그래도 저는 기존 코드에 작은 수정을 여러 번 제공하는 경향이 있으므로 모든 것이 좋습니다. :-) –

관련 문제