2010-10-19 86 views
0

你能给我一个想法,我可以存储来自数据库动态数据的最佳方式。我知道以前的列数,所以我想创建一个动态的数据结构,将保存所有的数据,我需要重新组织数据以显示输出。总之,当我们输入查询“select * from table”时,结果就会出现。如何动态存储结果。 (使用结构,地图,列表..)。提前致谢。存储数据动态来自数据库 - c + +

回答

0

简而言之,您用来存储数据的数据结构实际上取决于您的数据使用模式。那就是:

  • 你需要输入数据吗?如果是这样,为什么要存储数据呢?
  • 如果不是,你会在数据上执行搜索吗?
  • 订购重要吗?
  • 你会用数据执行计算吗?
  • 需要保存多少数据?
  • 等...
+0

yup ..也是这样想的,现在焦点是如何动态地存储数据,如果可能的话还有列名... – jony 2010-10-20 06:36:17

0

的字符串数组(StringList的德尔福,不知道你有C++),每行一个,其中每行是一个逗号分隔的字符串。这可以轻松转储并作为.csv文件读入Excel,并导入到大量数据库中。 或者,XML文档可能是最好的。或者是其他东西。 “这取决于......”

-1

对于你来说,STL有相当多的选择。如果您不想创建对象,并且您不需要访问所有返回的行,则可以使用类在类对象或字符串中存储一行。

1)使用矢量 - 使用智能指针(shared_ptr)创建类的对象并将它们推入矢量中。由于涉及向量的复制,我会使用shared_ptr。稍后对它进行排序

2)使用map/set - 如果您正在寻找更快的插入,创建和插入元素可能代价高昂。查找也许更快。

3)哈希图 - 插入和查找时间比地图/集好。

+0

能不能详述第3点.. – jony 2010-10-20 06:38:37

+0

@jony - http://publib.boulder .ibm.com /信息中心/ comphelp/v9v111/index.jsp的?主题=/com.ibm.xlcpp9.aix.doc/standlib/stl_unordered_map.htm。 – DumbCoder 2010-10-20 09:28:53

+0

@jony - 请参阅性能分析部分。 http://en.wikipedia.org/wiki/Hash_table。在编译器实现中,查找时间是log n(基数2)的映射/集合。插入可能很慢,因为您在正确的位置插入了一个元素,这可能需要更改基础红黑树的结构。 – DumbCoder 2010-10-20 09:32:17