2017-06-02 9 views
0

私はこの情報がどこにでもあることは知っていますが、その方法は膨大であり、正しい方法を選択することは困難です。だから私を正しい場所に向けることさえもうまくいく。何百ものテーブル/モデルを保存する

私は彼が彼の株取引を入力し、テーブルに様々なデータを出力するクライアントのためのソフトウェアを開発しています。どんな種類のアクセス株データもありません。それはすべて内部で、個人的な目的のためだけです。

私が悩んでいるのは、月曜日から金曜日までシャッフルしたり、1年前から入力したデータを表示したいということです。だから、私は毎日のテーブルデータをどのように保存しますか?

テーブルのモデルをファイルまたはデータベースに保存する必要がありますか?おそらく、私が気づいていない別の方法があります。

テーブルの幅は10カラムで、誰でも問題があれば約900行です。ここではより多くのコードの要求に答えるために

編集*

は私が

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

は、あなたがより精通しているデータベースを選んだdown.`壊れているものですリレーショナルデータベースを使用し、検索の高速化のためのインデックスとしてDate Time列を使用する

speで必要なデータを取得できるため、データベースが優れています唯一の個人的な使用にある場合はパラメータ

をcifying、あなたは、SQL Serverのように、あなたが使用しているオペレーティングシステムにローカルデータベースを選択し、取得するには、バックアップに

抱擁

+0

私はこのデータベースを調べると混乱します(悲しいことに私の弱点はここにあります)。何百ものテーブルを検索するための日付と時刻の列はどうすればよいですか?オンラインの情報は、私がテーブルをマージして表示することだけを教えて作業していたmysqlのコース、さらには個々のテーブルを説明するようです。何百ものテーブルを日付/時刻の列を持つ1つのテーブルにマージして、それらを区別するキーですか? –

+1

一般に、各取引トランザクション(BUY、SELL)を1つのtrade_transactionテーブルに記録し、そのテーブルに日付時間列を追加するとします。 SQLを使用して、日付範囲または特定の日付に一致する行を照会することができます。 –

+0

@AdamCarrで同意すると、そのテーブル参照(外部キー)を検索する – DigaoParceiro

関連する問題