1

我想创建一个可视化的 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 方法中

4

3 回答 3

2

使用控制台应用程序项目而不是 winforms 项目

于 2013-07-10T07:15:34.043 回答
2

您应该将代码放在“Main”方法中,而不是放在 Form 的构造函数中。您根本不需要表单...另外我不建议使用控制台应用程序,因为这会弹出一个控制台窗口...

于 2013-07-10T09:42:02.693 回答
1

请分享您的代码以获得更深入的了解。

该程序正在将值写入数据库,但在您关闭连接/进行手动提交之前,数据库不会被更新(AKA 提交)。请再次分享您的代码。如果您不需要表格,我建议不要使用 winforms。您可以使用多种不同的方式来实现 DB 更新。例如,您可以使用sleep这样线程将偶尔工作一次(取决于您在 sleep 方法上给了他多少)。

无论如何,请给我们更多信息,以便我们为您提供帮助

已编辑

cmdDataBase->ExecuteReader();使用后MySQLConnection.commit()为了提交事务。将所有代码带到主函数中,而不是在创建表单时。看来您根本不需要表格,对吗?

如果您需要(阅读此处)以获取更多信息或搜索谷歌,请使用 Sleep 方法等待一段时间。更多的东西?

于 2013-07-10T06:53:58.443 回答