- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 WIN32 在 C++ 中制作了一个对话框,它收集数据,然后使用 ADO 将这些数据发送到 MS Access 数据库。
数据库有两个表,一个是主表,第二个是一对多的关系。
为了清楚起见,我给它们命名:主表是 Building,子表是 ElectricEnergy。
表中的 ElectricEnergy 是按月和年存储的能量消耗,因此该表具有以下架构:
ElectricEnergy< #ElectricEnergy_pk, $Building_pk, January,February, ...,December, Year>
填充后的表格如下所示:
YEAR | January | February | ... | December | Building_pk | ElectricEnergy_pk |
2012 | 20.5 | 250.32 | ... | 300.45 | 1 | 1 |
2013 | 10.5 | 50.32 | ... | 300 | 1 | 2 |
如您所见,表格存储了从 2012 年至今所有年份的建筑物每月的电能消耗。
在对话框中,用户可以通过上下箭头输入从另一个编辑控件中选择的一年的每月消耗量。
说明这一点的图片如下:
红色矩形表示月份。使用 updown 控件选择月份。
蓝色矩形表示年份。年份也可以通过 updown 控件进行选择。
紫色箭头表示输入每月消耗量的编辑控件。
点击左边的+按钮后,数据应该存储在某个变量中。
在上面的示例中,数据应存储为 2013 年 1 月。
我不知道选择哪种数据类型/算法来正确实现上述行为。
我知道如何使用 ADO 插入数据,但这种情况对我来说很难。
我不知道如何实现每年的数据存储,然后将它们全部转储到数据库中。
由于消费可以存储多少年是未知的,所以我决定使用vector来存储它们。
存储单年数据的 vector 是一个13(12个月+一年)的数组,命名为DataForSingleYear,
还有一个存储所有年份数据的 vector ,名为 ConsumtionForAllYears。
一个小的澄清:
vector< wstring > DataForSingleYear;
vector< vector< wstring > > ConsumtionForAllYears;
我可以成功地将数据推送到 vector DataForSingleYear 中,并且我可以成功地将所有这些年份推送到 vector ConsumtionForAllYears 中。
我是这样做的:
// this handler is simplified to preserve space
case IDC_BUTTON_PLUS_ON_THE_PICTURE:
DataForSingleYear[ // month chosen from red edit control ] =
( //data from purple edit control );
DataForSingleYear[ 12 // last element stores chosen year ] =
( //data from blue edit control );
ConsumtionForAllYears[ // ( chosen year from blue edit control ) - 2012 ] =
DataForSingleYear;
在 WM_INITDIALOG 对话框中,我像这样初始化 vector :
DataForSingleYear.assign( 13, L”-1” ); // -1 is default value
for( int i = 0; i < nYears; i++ )
ConsumtionForAllYears.push_back( DataForSingleYear );
在对话框中,有将所有数据加载到数据库中的保存按钮,但在上图中为了节省空间而省略了。
当按下那个按钮,数据成功插入数据库时,上面的 vector 应该为新条目重置。
我像这样重置了 vector :
DataForSingleYear.clear();
DataForSingleYear.assign( 13, L”-1” );
ConsumtionForAllYears.clear();
for( int i = 0; i < nYears; i++ )
ConsumtionForAllYears.push_back( DataForSingleYear );
我是初学者,还没有想出更好的方法来做vector的reset,但是感觉这个方法不好,容易出现buffer overflow。
1.看到上面描述的数据输入机制,你能确认为它的实现选择的 vector 是好的吗?
2.如果 vector 数据类型是一个不错的选择,你能评论一下我对 vector 的重置吗,因为我认为这不是最好的方法?
2.1.如果不好,能否请您提出改进建议?
3.最后,如果有更合适的数据类型,或者上述数据录入机制的实现,能否请您提出建议?
我在 Windows XP 上工作,使用 MS Visual Studio 2008。
如果需要任何其他代码、信息或任何其他内容,请提出要求,我会尽快提供。
谢谢。
最佳答案
在我看来,对单个年份数据使用 vector 是错误的。当您拥有所有相似类型的可变长度数据时,应使用 vector 。在您的情况下,这些都不是真的,您总是有 13 个数据元素,并且第一个(年份)与其余(月度值)的类型不同。
我会为您似乎需要的默认初始化声明一个带有构造函数的简单结构
struct YearlyData
{
YearlyData() { year = -1; for (int i = 0; i < 12; ++i) months[i] = -1; }
int year;
double months[12];
}
那么你的初始化代码就简单了
ConsumtionForAllYears.assign(nYears, YearlyData());
和你的重置码完全一样
ConsumtionForAllYears.assign(nYears, YearlyData());
并且不需要 DataForSingleYear
。
关于c++ - 关于选择适当的数据类型和算法以将数据插入数据库的必要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18757627/
我有 512 行要插入到数据库中。我想知道提交多个插入内容是否比提交一个大插入内容有任何优势。例如 1x 512 行插入 -- INSERT INTO mydb.mytable (id, phonen
已经提出了类似的问题,但由于它总是取决于,我单独询问我的具体情况。 我有一个网站页面,显示来自数据库的一些数据,要从该数据库生成数据,我必须执行一些相当复杂的多连接查询。 数据每天(每晚)更新一次。
我正在使用 MongoDb 和 MySQL 的 python 连接器 pymongo 和 pymysql 测试 MongoDb 和 MySQL,特别是插入功能。 pymongo版本是3.4,pymys
从 C# 应用程序插入大型数组(10M 元素)的最快方法是什么? 到目前为止,我使用的是批量插入。 C# 应用程序生成一个大文本文件,我使用 BULK INSERT 命令加载它。出于好奇,我编写了一个
我编写了一个枚举类型,当我为它运行我创建的 JUnit 测试时会出现以下语法错误: java.lang.Error: Unresolved compilation problems: Synt
我正在尝试创建一个程序,它将单词列表作为输入,并将它们排序为二叉树,以便能够找到它们,例如像字典。这是我到目前为止所做的,但是 newEl -> el = input; 出现段错误,我知道这是因为它试
你好 我有编译这个问题 \begin{equation} J = \sum_{j=1}^{C} \end{equation} 我不断收到错误 missing $ inserted 这很奇怪,因
我需要使用 LINQ to SQL 将记录插入到没有主键的表中。 table 设计得很差;我无法控制表结构。该表由几个 varchar 字段、一个文本字段和一个时间戳组成。它用作其他实体的审计跟踪。
我正在尝试使用 itextsharp 创建 Pdf。我添加了一张包含两列的表格,其中一列包含文本和其他图像。我想要恒定的图像大小 如果另一个单元格中的文本增加并且其他单元格中的图像大小不同,我的图像会
我想把 calory 作为 fruits 的第一个值,我做不到,有人能帮忙吗? $sql = 'INSERT INTO fruits VALUES('', ?, ?, ?)'
我有一个包含季度观察结果的 data.frame。我现在想插入每月值(首选三次,线性很好)。中间目标应该是使用 DATE 创建一个 data.frame作为所有每月观察的索引和缺失值。 谷歌搜索表明我
我想知道是否有办法在值列表中使用“插入”。我正在尝试这样做: insert into tblMyTable (Col1, Col2, Col3) values('value1', value
我想让人们能够在他们的网站中插入单个 Javascript 行,这实际上允许我插入包含我网站内容的固定大小的 IFRAME。它实际上是一个小部件,允许他们搜索我的网站或接收其他信息。这可能吗? 最佳答
我有一个包含时间的表,列名为 time,数据类型为 Date。 在 asp.net 中,我想要一个查询插入日期,另一个查询则在 2 个日期之间进行选择。 我已经尝试过这个: string data =
这是我的代码: create or replace trigger th after insert on stock for each row declare sqty number;
这是一个带有具体示例的通用问题。 我有一个包含三个字段(流派 ID (PK IDENTITY)、流派和子流派)的表。该表对(流派,子流派)组合具有唯一约束。 我想知道如何修改存储过程以在表中不存在时插
因此,我正在遍历二叉树,节点包含字符串,以及读取文件时该字符串是否出现多次。我只查找读取文件时出现次数最多的前 10 个单词,因此本质上我只是比较 int 值。 我的问题是我正在尝试找出一种有效的方法
我有一张机票和行李 map , 每张门票必须是唯一的,并且必须与 map 上的位置相对应 是否可以仅更改行李(m_bagage->秒)而不更改 key ? std::unordered_map m_c
我正在使用 jdbc 驱动程序做一个示例项目。我的问题是,如果我在 2 文本字段中输入空值。 null 不应该加载到数据库中吗?有没有办法避免在数据库中插入空字段?任何帮助将不胜感激。 //Execu
我想知道 SSIS 中是否有特定的插入或更新选项。 如果我想让程序检查它是更新还是插入,我是否必须做一些编码?或者是否可以启用一个选项,以便它会自行检查 PK 是否存在,然后更新,否则插入? 亲切的问
我是一名优秀的程序员,十分优秀!