java和数据库连接

时间:2014-09-04 06:20:52

标签: java sql swing

我在项目中遇到问题我无法使用数据源连接程序

所以,如果有任何帮助,我会帮助我

这是错误消息和下面的源代码

我遇到麻烦plzzz帮助meeeeee

//for creating the North Panel
    private JPanel northPanel = new JPanel();
    //for creating the Center Panel
    private JPanel centerPanel = new JPanel();
    //for creating the label
    private JLabel northLabel = new JLabel("THE LIST FOR THE BOOKS");
    //for creating the button
    private JButton printButton;
    //for creating the table
    private JTable table;
    //for creating the TableColumn
    private TableColumn column = null;
    //for creating the JScrollPane
    private JScrollPane scrollPane;

    //for creating an object for the ResultSetTableModel class
    private ResultSetTableModel tableModel;

    /***************************************************************************
     * for setting the required information for the ResultSetTableModel class. *
     ***************************************************************************/
    private static final String JDBC_DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
    private static final String DATABASE_URL = "jdbc:odbc:Telecom";
    private static final String DEFAULT_QUERY = "SELECT EmployeeID,EmployeeName,ProjectName,JobTitle,MobileNumber,DateOfSim,SimNumber,MCG,Active  FROM [Telecom].[dbo].[Employee];";


    //constructor of listBooks
    public ListBooks() {
        //for setting the title for the internal frame
        super("Employee", false, true, false, true);
        //for setting the icon
        setFrameIcon(new ImageIcon(ClassLoader.getSystemResource("images/List16.gif")));
        setLocale(new java.util.Locale("ar", "SA", ""));

        //for getting the graphical user interface components displaygvk area
        Container cp = getContentPane();

        //for bassing the required information to the ResultSetTableModel object
        try {
            tableModel = new ResultSetTableModel(JDBC_DRIVER, DATABASE_URL, DEFAULT_QUERY);
            //for setting the Query
            try {
                tableModel.setQuery(DEFAULT_QUERY);
            }
            catch (SQLException sqlException) {
            }
        }
        catch (ClassNotFoundException classNotFound) {
            System.out.println(classNotFound.toString());
        }
        catch (SQLException sqlException) {
            System.out.println(sqlException.toString());
        }
        //for setting the table with the information
        table = new JTable(tableModel);
        //for setting the size for the table
        table.setPreferredScrollableViewportSize(new Dimension(990, 200));
        //for setting the font
        table.setFont(new Font("Tahoma", Font.PLAIN, 12));
        //for setting the scrollpane to the table
        scrollPane = new JScrollPane(table);

        //for setting the size for the table columns
        for (int i = 0; i < 9; i++) {

            column = table.getColumnModel().getColumn(i);
            if (i == 0) //BookID
            column.setPreferredWidth(20);
            if (i == 1) //Subject
                column.setPreferredWidth(100);
            if (i == 2) //Title
                column.setPreferredWidth(150);
            if (i == 3) //Auther
                column.setPreferredWidth(50);
            if (i == 4) //Publisher
                column.setPreferredWidth(70);
            if (i == 5) //Copyright
                column.setPreferredWidth(40);
            if (i == 6) //Edition
                column.setPreferredWidth(40);
            if (i == 7) //Pages
                column.setPreferredWidth(40);
            if (i == 8) //NumberOfBooks
                column.setPreferredWidth(80);


               }
        //for setting the font to the label
        northLabel.setFont(new Font("Tahoma", Font.BOLD, 14));
        //for setting the layout to the panel
        northPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        //for adding the label to the panel
        northPanel.add(northLabel);
        //for adding the panel to the container
        cp.add("North", northPanel);

        //for setting the layout to the panel
        centerPanel.setLayout(new BorderLayout());
        //for creating an image for the button
        ImageIcon printIcon = new ImageIcon(ClassLoader.getSystemResource("images/Print16.gif"));
        //for adding the button to the panel
        printButton = new JButton("print the books", printIcon);
        //for setting the tip text
        printButton.setToolTipText("Print");
        //for setting the font to the button
        printButton.setFont(new Font("Tahoma", Font.PLAIN, 12));
        //for adding the button to the panel
        centerPanel.add(printButton, BorderLayout.NORTH);
        //for adding the scrollpane to the panel
        centerPanel.add(scrollPane, BorderLayout.CENTER);
        //for setting the border to the panel
        centerPanel.setBorder(BorderFactory.createTitledBorder("Books:"));
        //for adding the panel to the container
        cp.add("Center", centerPanel);

        //for adding the actionListener to the button
        printButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                Thread runner = new Thread() {
                    public void run() {
                        try {
                            PrinterJob prnJob = PrinterJob.getPrinterJob();
                            prnJob.setPrintable(new PrintingBooks(DEFAULT_QUERY));
                            if (!prnJob.printDialog())
                                return;
                            setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                            prnJob.print();
                            setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
                        }
                        catch (PrinterException ex) {
                            System.out.println("Printing error: " + ex.toString());
                        }
                    }
                };
                runner.start();
            }
        });
        //for setting the visible to true
        setVisible(true);
        //to show the frame
        pack();
    }
}

我收到以下错误

  

java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]无效的字符串   或缓冲区长度

1 个答案:

答案 0 :(得分:0)

你应该试试这个

for (int i = 0; i < 9; i++) 
    column = table.getColumnModel().getColumn(i+1);

而不是

for (int i = 0; i < 9; i++) 
    column = table.getColumnModel().getColumn(i);

也许有效。