新しい行が追加され、データテーブルが更新されました。レコードがテーブルに挿入されました。しかし、同じデータテーブルをもう一度塗りつぶすと、結果は空のデータテーブルになります。何か不足していますか?私は間違ったことをしましたか?私は最近、.netでデータベースを使用することについて学びましたが、私はこの問題をどうするか分かりません。私は他のテーブル/クエリでそれを使用することができますので、私は1つのプロシージャにこれらの行を折り返すことができるかどう新しい行を追加した後にDataTableの行がフェッチされない
MySqlConnection ^connection;
DataTable ^table1;
MySqlDataAdapter ^adapter1;
MySqlCommandBuilder ^cmb;
private: System::Void opentable(String ^sql){
adapter1 = gcnew MySqlDataAdapter(sql,connection);
cmb = gcnew MySqlCommandBuilder(adapter1);
table1 = gcnew DataTable;
adapter1->Fill(table1);
}
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
connection = gcnew MySqlConnection("XXXXXXXXXX");
connection->Open();
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
opentable("SELECT * FROM ms_per WHERE PerCode='001'");
if(table1->Rows->Count==0){ //table1->Rows->Count is 0
DataRow ^newrow = table1->NewRow();
newrow["PerCode"] = "001";
table1->Rows->Add(newrow);
}
adapter1->Update(table1);
opentable("SELECT * FROM ms_perhist");
dataGridView1->DataSource=table1;
//ms_perhist is not an empty table, but after this the DataTable is empty.
私は見ています:
adapter1 = gcnew MySqlDataAdapter(sql,connection);
cmb = gcnew MySqlCommandBuilder(adapter1);
table1 = gcnew DataTable;
adapter1->Fill(table1);
注1:私は、次の行を試してみました。 ms_perhistのデータが正しく表示されるため、newrow-update行に問題がある可能性があります。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
opentable("SELECT * FROM ms_per WHERE PerCode='001'");
opentable("SELECT * FROM ms_perhist");
dataGridView1->DataSource=table1;
}
まだrowcount Redを探していますか? Visual C++ 2008 Express Editionまたは2015 OK? – Drew
ああ、そうです。私は誰も私の問題を理解していないのだろうかと思っていた。 問題はもう行数ではありません。これは空のデータテーブルです。 –
よく見ていきます。使用している環境とは異なる環境になっている可能性があります。 – Drew