2011-12-24 4 views
0

Я изучаю базы данные с помощью Java, а вот простой код для этого:JDBC-ODBC подключение моста

import java.awt.BorderLayout; 

import java.awt.Dimension; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.List; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.JTextField; 


public class ClassGUIApplication extends JFrame{ 

private JPanel centerPnl = new JPanel(); 
private JPanel northPnl = new JPanel(); 
private JLabel idLbl = new JLabel("Id:"); 
private JLabel nameLbl = new JLabel("Name:"); 
private JLabel surnameLbl = new JLabel("Surname:"); 
private JLabel gradeLbl = new JLabel("Grade:"); 
private JTextField idTxt = new JTextField(30); 
private JTextField nameTxt = new JTextField(30); 
private JTextField surnameTxt = new JTextField(30); 
private JTextField gradeTxt = new JTextField(30); 
private JButton insertBtn = new JButton("INSERT"); 
private JTable table; 
private StudentDBManager mng = new StudentDBManager(); 
private ClassTableModel model; 
public ClassGUIApplication() { 
    setTitle("Class Grade Report"); 
    setLayout(new GridLayout(2,1)); 
    centerPnl.setLayout(new GridBagLayout()); 
    GridBagConstraints gc = new GridBagConstraints(); 
    gc.gridx = 0; 
    gc.gridy = 0; 
    centerPnl.add(idLbl, gc); 
    gc.gridx = 1; 
    gc.gridy = 0; 
    centerPnl.add(idTxt, gc); 
    gc.gridx = 0; 
    gc.gridy = 1; 
    centerPnl.add(nameLbl, gc); 
    gc.gridx = 1; 
    gc.gridy = 1; 
    centerPnl.add(nameTxt, gc); 
    gc.gridx = 0; 
    gc.gridy = 2; 
    centerPnl.add(surnameLbl, gc); 
    gc.gridx = 1; 
    gc.gridy = 2; 
    centerPnl.add(surnameTxt, gc); 
    gc.gridx = 0; 
    gc.gridy = 3; 
    centerPnl.add(gradeLbl, gc); 
    gc.gridx = 1; 
    gc.gridy = 3; 
    centerPnl.add(gradeTxt, gc); 
    gc.gridx = 2; 
    gc.gridy = 4; 
    centerPnl.add(insertBtn, gc); 
    insertBtn.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      int id = Integer.parseInt(idTxt.getText()); 
      String name = nameTxt.getText(); 
      String surname = surnameTxt.getText(); 
      double grade = Double.parseDouble(gradeTxt.getText()); 
      Student student = new Student(id,name,surname,grade); 
      mng.addStudent(student); 
      List<Student> classList = mng.getStudents(); 
      model = new ClassTableModel(classList); 
      table.setModel(model); 

     } 
    }); 

    northPnl.setLayout(new GridLayout()); 
    List<Student> classList = mng.getStudents(); 
    model = new ClassTableModel(classList); 
    table = new JTable(model); 
    northPnl.add(new JScrollPane(table)); 

    add(centerPnl); 
    add(northPnl); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setPreferredSize(new Dimension(500,500)); 
    setVisible(true); 
    pack(); 
} 

public static void main(String[] args) { 
    ClassGUIApplication app = new ClassGUIApplication(); 
} 


} 


public static void main(String[] args) { 
    ClassGUIApplication app = new ClassGUIApplication(); 
} 


} 

затмения дает EROR так:

 
java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application 
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source) 
    at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at StudentDBManager.openConnection(StudentDBManager.java:21) 
    at StudentDBManager.(StudentDBManager.java:15) 
    at ClassGUIApplication.(ClassGUIApplication.java:36) 
    at ClassGUIApplication.main(ClassGUIApplication.java:102) 
+0

'StudentDBManager.openConnection (StudentDBManager.java21)' как выглядит URL-адрес jdbc? – stacker

+0

Просьба также предоставить код для вашего класса StudentDBManager. Это может придать больше света этому и коду, который на самом деле пытается подключиться к вашему источнику данных. –

+0

@ user1091692: Вы используете 64-битную операционную систему? –

ответ

3

ли ваша операционной система или JVM 32 бит или 64 бит?

Я не верю, что 64-битный JVM имеет класс драйвера моста ODBC. А 64 битная операционная система будет предположить, что вы должны прочитать:

http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/1c63e3ae-e001-4066-9eac-ad9162116603

Всякий раз, когда я получаю сообщение об ошибке, то первое, что я делаю, это вставить его в Google. Я обычно узнаю, что я не первый человек, который видит мою проблему.

+0

моя операционная система и jre - 64 бит, и я пытаюсь использовать 32-битную odbcad cuz 64-разрядную поддержку не поддерживает – Beyaz

+0

спасибо, что я решил проблему со своей ссылкой – Beyaz

+0

С Рождеством! Я бы предпочел, чтобы ваш ответ был благодарен. – duffymo

Смежные вопросы