-1

私は自分のデータベースで同じデータを定期的に更新していたテーブルがあるC#のフォームアプリに取り組んでいます顧客という名前のテーブルがあり、次の列があります

顧客 ID | バランス | Last_Bill_Id | Last_Bill_Date | Last_Bill_Total | Last_Deposited | Last_Deposited_Date |

現在、このコードを使用してデータベースを更新しています

 try
        {

            OleDbConnection con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = G:\\my Documents\\Visual Studio 2008\\Projects\\xml_and_db_test\\xml_and_db_test\\bin\\Debug\\database_for_kissan_Pashu_AhaR_Bills.mdb");
         string queryText = "UPDATE Customers SET Balance = ? ,Last_Bill_Id = ?,Last_Bill_Date = ? ,Last_Bill_Total = ?,Last_Deposited = ? , Last_Deposited_Date =?  where CustomerId = ?;";


            OleDbCommand cmd = new OleDbCommand(queryText, con);
            cmd.CommandType = CommandType.Text;







            cmd.Parameters.Add("Balance", OleDbType.Integer).Value = Convert.ToInt32(textBox2.Text);

            cmd.Parameters.Add("Last_Bill_Id", OleDbType.Integer).Value = 15;
            cmd.Parameters.Add("Last_Bill_Date", OleDbType.Date).Value = DateTime.Now;
            cmd.Parameters.Add("Last_Bill_Total", OleDbType.Integer).Value = 1560;

            cmd.Parameters.Add("Last_Deposited", OleDbType.Integer).Value = 500;

            cmd.Parameters.Add("Last_Deposited_Date", OleDbType.Date).Value = DateTime.Now;



            cmd.Parameters.Add("CustomerId", OleDbType.Integer).Value = Convert.ToInt32(textBox1.Text);





            con.Open(); // open the connection
            //OleDbDataReader dr = cmd.ExecuteNonQuery();

            int yy = cmd.ExecuteNonQuery();

            textBox3.Text = "update Done";
            con.Close();

        }
        catch (Exception ex)
        {
            string c = ex.ToString();
            MessageBox.Show(c);

        }

問題Last_Deposited および Last_Deposited_Dateフィールド を更新したくない場合があるので 、このコードを試してみました

  try
        {

            OleDbConnection con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = G:\\my Documents\\Visual Studio 2008\\Projects\\xml_and_db_test\\xml_and_db_test\\bin\\Debug\\database_for_kissan_Pashu_AhaR_Bills.mdb");


            string queryText = "UPDATE Customers SET Balance = ? ,Last_Bill_Id = ?,Last_Bill_Date = ? ,Last_Bill_Total = ?  where CustomerId = ?;";

            OleDbCommand cmd = new OleDbCommand(queryText, con);
            cmd.CommandType = CommandType.Text;







            cmd.Parameters.Add("Balance", OleDbType.Integer).Value = Convert.ToInt32(textBox2.Text);

            cmd.Parameters.Add("Last_Bill_Id", OleDbType.Integer).Value = 15;
            cmd.Parameters.Add("Last_Bill_Date", OleDbType.Date).Value = DateTime.Now;
            cmd.Parameters.Add("Last_Bill_Total", OleDbType.Integer).Value = 1560;

        //    cmd.Parameters.Add("Last_Deposited", OleDbType.Integer).Value = 500;

       //     cmd.Parameters.Add("Last_Deposited_Date", OleDbType.Date).Value = DateTime.Now;



            cmd.Parameters.Add("CustomerId", OleDbType.Integer).Value = Convert.ToInt32(textBox1.Text);





            con.Open(); // open the connection
            //OleDbDataReader dr = cmd.ExecuteNonQuery();

            int yy = cmd.ExecuteNonQuery();

            textBox3.Text = "update Done";
            con.Close();

        }
        catch (Exception ex)
        {
            string c = ex.ToString();
            MessageBox.Show(c);

        }

2 番目のコードで dB を更新するたびに、Last_Deposited および Last_Deposited_Date に保存された値が削除されます。これらの値を削除したくありません。これらのフィールドで新しい値が利用可能になったときにのみ更新したいのです。

4

1 に答える 1

1

2 つのフィールドを更新したくない場合は、更新クエリでそれらを割り当てないでください。

于 2013-07-28T11:42:18.867 に答える