2011-07-01 5 views
2

C#フォームを使用してデータベースを更新する際に問題があります。 2つのリッチテキストボックスを使用しています.1つは読み込み専用で、データベース(richTextBox)から取得したデータが含まれます。 他のrichtextboxは、データベース(richTextBox1)へのデータ入力を可能にするために使用されます。フォームが読み込まれると、データベースのデータが読み込み専用のテキストボックスに読み込まれます。 richTextBox1にデータを書き込むと、「編集」ボタンを押すとデータベースに追加されます。リッチテキストボックス追加クエリ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に入力され、「編集」ボタンが押され、その結果データが追加されますデータベース。 3.フォームを再度開くと、追加されたデータが読み取り専用テキストボックスに表示されます。richTextBox

+1

メソッドのキャッチ部分と最後の部分はどこですか? –

答えて

1

実際にSQL文がデータを上書きしています。 あなたがDBから読み出されたレコードにリッチテキストボックス内に存在するデータを追加したい場合は、あなたのUPDATEのSQL文は次のようになります。

UPDATE QuizQuestions SET DataToRead = DataToRead + @prichTextBox 
+0

Gheysels - GMTA、ねえ? –

0

、あなたの更新ステートメントを変更するとどうなりますか

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

「1つまたは複数の必須パラメータに値が指定されていません。」 – user612041

+0

Field DataReadがデータを返すことを確信していますか?変数@prichTextBoxにもデータがあることを確認してください。 –

+0

はい、私はデータを 'richTextBox'に配置しているので、richtexboxのどこにデータを追加したいのですか – user612041

関連する問題