2017-06-02 87 views
0

我知道这个信息无处不在,但其如此巨大的难以选择合适的方法。所以即使指着我正确的地方也适用。储存大量的表格/模式

我开发的软件,他输入自己的股票交易客户端和它的各种数据输出到一个表。没有任何访问的股票数据,这是全部内部的,仅供个人使用。

我坚持的是什么,他希望能够通过周一洗牌至周五,或视图从一年前的输入数据。那么我将如何存储每日表格数据。

我应该表的模型保存到一个文件或数据库?也许有一种我不知道的方法。

的表是10列宽有大约900排很长,如果该事项对任何人。

编辑*

解答这里更多的代码的要求是什么,我已经打破down.`

MainFrame() { 
    super("Stack Overflow Stock Software"); 

    model.addColumn("Exchange"); 
    model.addColumn("Inv/Sec"); 
    model.addColumn("Name"); 
    model.addColumn("Qty"); 
    // model.addColumn("Fd"); 
    model.addColumn("Average Cost"); 
    model.addColumn("Market"); 
    model.addColumn("Balance"); 
    // model.addColumn("Interest"); 
    model.addColumn("Today's PL"); 
    model.addColumn("Total Pl"); 
    // model.addColumn("Multiplier"); 
    // model.addRow(data); 
    table = new JTable(model); 

    modelTotal.addColumn("Balance"); 
    modelTotal.addColumn("Today PL"); 
    modelTotal.addColumn("Total PL"); 
    table2 = new JTable(modelTotal); 

    setLayout(new BorderLayout()); 

    // JComboBox<String> comboBox = new JComboBox<>(exchangeStrings); 
    // sorter = new TableRowSorter<TableModel>(table.getModel()); 

    JPanel panel1 = new JPanel(); 
    text1 = new JTextField(5); 
    text1.setText("ABA"); 
    text1.setHorizontalAlignment(SwingConstants.CENTER); 
    text2 = new JTextField(12); 
    text2.setText("1000");// quanity 
    text2.setHorizontalAlignment(SwingConstants.CENTER); 
    text3 = new JTextField(10); 
    text3.setText("10.00");// price 
    text3.setHorizontalAlignment(SwingConstants.CENTER); 

    button1 = new JButton("Buy"); 
    button1.addActionListener(this); 
    button2 = new JButton("Sell"); 
    button2.addActionListener(this); 

    JScrollPane scrollPane = new JScrollPane(table); 
    JScrollPane scrollPane2 = new JScrollPane(table2); 

    // sets table settings 
    table.setFillsViewportHeight(true); 
    table.getColumnModel().getColumn(0).setMaxWidth(80); 
    table.getColumnModel().getColumn(1).setPreferredWidth(80); 
    table.getColumnModel().getColumn(2).setPreferredWidth(180); 
    table.getColumnModel().getColumn(4).setPreferredWidth(24); 
    table.getColumnModel().getColumn(6).setPreferredWidth(24); 
    table.getColumnModel().getColumn(7).setPreferredWidth(24); 
    // table.getColumnModel().getColumn(9).setPreferredWidth(0); 
    table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); 
    setCellsAlignment(table, SwingConstants.CENTER); 

    setCellsAlignment(table2, SwingConstants.CENTER); 

    // add panels/buttons/etc to page 
    add(panel1, BorderLayout.PAGE_START); 
    panel1.setPreferredSize(new Dimension(1280, 50)); 
    add(scrollPane, BorderLayout.CENTER); 
    add(scrollPane2, BorderLayout.PAGE_END); 
    scrollPane2.setPreferredSize(new Dimension(1280, 50)); 

    // add(scrollPane, BorderLayout.CENTER); 
    panel1.add(comboBox, BorderLayout.SOUTH); 
    panel1.add(text1, BorderLayout.SOUTH); 
    panel1.add(text3, BorderLayout.SOUTH);// price 
    panel1.add(text2, BorderLayout.SOUTH); 
    panel1.add(button1, BorderLayout.NORTH); 
    panel1.add(button2, BorderLayout.NORTH); 

    setMenuBar(); 
    modelTotal.addRow(data2); 

    setExtendedState(MAXIMIZED_BOTH); 
    setMinimumSize(new Dimension(1280, 485)); 
    setSize(640, 485); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 

} 

private void setMenuBar() {...} 
    /*Set the menu bar up*/ 

public static void setCellsAlignment(JTable table, int alignment) { 
    DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer(); 
    rightRenderer.setHorizontalAlignment(alignment); 

    TableModel tableModel = table.getModel(); 

    for (int columnIndex = 0; columnIndex < tableModel.getColumnCount(); columnIndex++) { 
     table.getColumnModel().getColumn(columnIndex).setCellRenderer(rightRenderer); 
    } 
} 

public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == button1) {// if button 1 pressed to buy 
     purchaseMade = true; 

     // input data in data object for adding or combining. 
     String comboString = comboBox.getSelectedItem().toString(); 
     String stringCombo = comboString; 
     data[0] = stringCombo; 
     data[1] = text1.getText(); 
     data[2] = text1.getText(); // turn into long string 
     data[3] = text2.getText();// quanity 
     data[5] = text3.getText();// price 
     data[4] = text3.getText();// average market price 
     double String1 = Double.parseDouble(data[3].toString()); 
     double String2 = Double.parseDouble(data[4].toString()); 
     data[6] = String1 * String2; 

     double dataQuanity = Double.parseDouble(data[3].toString()); 
     double dataPrice = Double.parseDouble(data[4].toString()); 
     data[7] = dataQuanity * dataPrice * -1; 
     data[8] = dataQuanity * dataPrice * -1; 

     data[4] = Double.parseDouble(data[4].toString()); 
     data[4] = df.format(data[4]); 

     data[5] = Double.parseDouble(data[5].toString()); 
     data[5] = df.format(data[5]); 

     data[6] = Double.parseDouble(data[6].toString()); 
     data[6] = df.format(data[6]); 

     data[7] = Double.parseDouble(data[7].toString()); 
     data[7] = df.format(data[7]); 

     data[8] = Double.parseDouble(data[8].toString()); 
     data[8] = df.format(data[8]); 

     // add data and continue on 
     model.addRow(data); 
     dataCount++; 
     combineData(model); 
     sortData(table); 
    } 

    if (e.getSource() == button2) { 
     purchaseMade = false; 

     // input data in data object for adding or combining. 
     data[0] = comboBox.getSelectedItem();// exchange 
     data[1] = text1.getText();// symbol 
     data[2] = text1.getText(); // turn into long string//name 
     data[3] = text2.getText();// quanity 
     data[4] = text3.getText();// average price 
     data[5] = text3.getText();// closing bid/market 
     data[9] = 1; 

     // data 5 can wait 
     double String1 = Double.parseDouble(data[3].toString()); 
     double String2 = Double.parseDouble(data[4].toString()); 
     data[6] = String1 * String2; 
     // pl 
     double dataQuanity = Double.parseDouble(data[3].toString()); 
     double dataPrice = Double.parseDouble(data[4].toString()); 
     data[7] = dataQuanity * dataPrice * -1; 
     data[8] = dataQuanity * dataPrice * -1; 

     // add data and continue on 
     dataCount++; 
     combineData(model); 
     sortData(table); 
    } 

} 

private void combineData(DefaultTableModel model2) { 
    /*This section of codes adds the new data to a table or combines it with a duplicate entry*/ 
} 

private void sortData(JTable table) {...} 
    /*This is where I sort my table*/ 

private void calculateLowerData(DefaultTableModel lowerModel, DefaultTableModel dataModel) {...} 
    /* This is where I calculate a number not relevant to the question*/ 


private void printTable() {...} 
    /* This is where I print my data to a table */ 

}`

+0

要获得一个答案你需要提供你已经写的更多细节。征求意见将让他锁定。 –

+0

是的,我之前有问题询问数据库问题。发布我的代码,尽管我真的是我的数据操作和表/模型/输入设置。我没有实现每日轮换,因为我不知道如何设置要保存的数据。 –

回答

1

选择了你更熟悉数据库,优先关系数据库,并使用日期时间列索引更快的搜索

与数据库是更好,因为你可以得到你想要SPE数据cifying参数

如果是仅供个人使用,您可以选择在本地数据库中,你正在使用,如SQL Server操作系统,并确保执行备份

拥抱

+0

当我看着这个数据库(可惜我的弱点在这里)时,我感到困惑的是如何获得日期和时间列来搜索数百个表格。网上的信息似乎只解释了一个单独的表格,甚至更多,我所使用的mysql课程只教授合并和显示表格。是我把所有数百个表格合并到一个表格中的关键,用日期/时间列来区分它们吗? –

+1

一般而言,您希望将每笔交易记录(买入,卖出)记录到一张trade_transaction表格中,并在该表格上添加日期时间列。您可以使用SQL来查询匹配日期范围或特定日期的行。 –

+0

同意@AdamCarr,搜索关于表引用(外键) – DigaoParceiro