我想创建一个可视化的c ++程序,它会以特定的时间间隔自动在数据库中插入一些随机值和当前系统日期时间。我将使用srand()函数。我不知道该怎么做。我能够使用winForm项目实现这一点,并使用任务计划程序将其安排为每30分钟运行一次,但问题是每次弹出一个空表单时,除非我关闭它,否则不会输入值。我需要的是所有这些都是自己发生的,窗口不应该弹出它的空白。 winform是实现这一目标的正确方法,如果没有,那么我应该选择什么样的项目。也许是计时器,线程......请说清楚,因为我对此比较陌生。
此致
PS:这是代码
String^ constring = L"datasource=localhost;port=3306;username=root;password=root";
MySqlConnection^ conDataBase = gcnew MySqlConnection(constring);
MySqlCommand^ cmdDataBase = gcnew MySqlCommand("INSERT INTO `data`.`test` (`datetime`,`temp`,`pressure`) VALUES ('"+dt+"','"+rand_temp+"','"+rand_pressure+"');",conDataBase); MySqlDataReader^ myReader;
try{
conDataBase->Open();
myReader = cmdDataBase->ExecuteReader();
//MessageBox::Show("Data Inserted");
while(myReader->Read()){
}
}catch(Exception^ex){
MessageBox::Show(ex->Message);
}
Application::Exit();
上面的代码在我的formload方法
中答案 0 :(得分:2)
使用控制台应用程序项目而不是winforms项目
答案 1 :(得分:2)
您应该将代码放在“Main”方法中,而不是放在Form的构造函数中。你根本不需要表格...... 此外,我不建议使用控制台应用程序,因为这将弹出一个控制台窗口......
答案 2 :(得分:1)
请分享您的代码以获得更深入的见解。
程序正在向DB写入值,但DB将不会更新(A.K.A已提交),直到您关闭连接/执行手动提交。请再次分享您的代码。如果您不需要表格,我建议不要使用winforms。您可以使用各种不同的方式来实现数据库更新。例如,你可以使用sleep
,这样线程就可以偶尔使用一次(取决于你在睡眠方法上给了他多少)。
无论如何,请提供更多信息,以便我们为您提供帮助
<强>编辑强>
在cmdDataBase->ExecuteReader();
使用MySQLConnection.commit()
后提交事务。将所有代码都带到main函数,而不是创建表单。它似乎根本不需要表格,对吗?
如果需要,请使用Sleep方法等待一段时间(阅读here)以获取更多信息或搜索谷歌。 还有什么?