2011-07-01 28 views
2

我在使用C#表单更新数据库时遇到了问题。我使用了两个richtextboxes,一个只能读取,另一个将包含从我的数据库(richTextBox)中检索到的数据。 其他richtextbox将用于允许数据输入到数据库(richTextBox1)。当我的表单加载时,数据库中的数据被加载到只读文本框中。然后可以将数据写入richTextBox1,然后一旦按下“编辑”按钮,数据就会附加到数据库中。Richtextbox追加查询C#

我遇到的问题是,不是将数据附加到数据库,而是输入的新数据覆盖旧数据。从我读到的消息来源看来,没有办法追加数据,只能替换数据。 我的代码如下:

代码从数据库中检索数据:

private void QuizForm_Load(object sender, EventArgs e) 
     { 
     //declare connection string using windows security 
     string cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Hannah\\Desktop\\Quiz.accdb"; 

     //declare Connection, command and other related objects 
     OleDbConnection conGet = new OleDbConnection(cnString); 
     OleDbCommand cmdGet = new OleDbCommand(); 

     try 
     { 
      //open connection 
      conGet.Open(); 

      cmdGet.CommandType = CommandType.Text; 
      cmdGet.Connection = conGet; 
      cmdGet.CommandText = "SELECT DataToRead FROM QuizQuestions"; 

      richTextBox.Text = cmdGet.ExecuteScalar().ToString(); 

      conGet.Close(); 

     } 

代码将数据保存到数据库:

private void btnEdit_Click(object sender, EventArgs e) 
     { 
      //richTextBox.Enabled = true; 

      { 
      //declare connection string using windows security 
      string cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Hannah\\Desktop\\Quiz.accdb"; 

      //declare Connection, command and other related objects 
      OleDbConnection conSave = new OleDbConnection(cnString); 
      OleDbCommand cmdSave = new OleDbCommand(); 

      try 
      { 

       //open connection 
       conSave.Open(); 

       cmdSave.CommandType = CommandType.Text; 
       cmdSave.Connection = conSave; 
       cmdSave.CommandText = "UPDATE QuizQuestions SET DataToRead = @prichTextBox"; 

       OleDbParameter parrichTextBox1 = new 
        OleDbParameter("@prichTextBox", OleDbType.VarChar); 
       parrichTextBox1.Value = (richTextBox.Text + richTextBox1.Text); 

       cmdSave.ExecuteNonQuery(); 

       //cmdSave.Parameters.Add("@parrichTextBox1", OleDbType.VarChar, combinedTextBox); 

       conSave.Close(); 
       //END OF MY CODE 


      } 

总之,这是我想发生什么: 1.打开表格,并自动将richTextBox填入数据库内容 2.在richTextBox1中输入数据/文本,按下“编辑”按钮,导致数据被附加到第e数据库。 3.当表单重新打开时,添加的数据在只读文本框中可见richTextBox

+1

方法的Catch和Finally部分在哪里? –

回答

1

您的SQL语句确实覆盖了数据。 如果您想追加存在于RichTextBox的到已经从数据库中读取的记录中的数据,您的更新SQL语句应该是这样的:

UPDATE QuizQuestions SET DataToRead = DataToRead + @prichTextBox 
+0

Gheysels - GMTA,是吧? –

0

,如果你改变你的更新语句,会发生什么代替:

cmdSave.CommandText = "UPDATE QuizQuestions SET DataToRead = DataToRead + ' '" + @prichTextBox"; 
+0

我收到消息'没有给出一个或多个必需参数的值' – user612041

+0

您确定Field DataRead正在返回数据,您是否也确定变量@prichTextBox也有数据? –

+0

是的,因为我正在将数据放入'richTextBox',我想将数据添加到 – user612041