1

每次我跑我的程序我得到一個錯誤「由於文件不存在」連接到.ACCDB文件

由於文件不存在時:Registeration.accdb

的「Registeration .accdb「文件位於具有我的代碼的相同目錄中,並在下面的圖像中指定了數據庫路徑。

enter image description here

// Registeration of Student 
import java.awt.Color; 
import java.awt.Font; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

import javax.swing.JOptionPane; 
import javax.swing.JTextField; 
import javax.swing.JButton; 
import javax.swing.JLabel; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
public class Registeration extends ControlDesk{ 
private JLabel title,rollno,firstname,lastname,gender,fathername,contact,alter_contact,course,section,address,session; 
private JTextField rollnotxt,firstnametxt,lastnametxt,gendertxt,fathernametxt,contacttxt,alter_contacttxt,coursetxt,sectiontxt,addresstxt,sessiontxt; 
private JButton register,controlDesk; 
private JFrame registerFrame; 
private JPanel registerPanel; 
//Constructor 
public Registeration(){ 
    registerFrame = new JFrame("Library Management System - Registeration"); 
    registerPanel = new JPanel(); 
    registerFrame.add(registerPanel); 
    registerPanel.setBackground(Color.YELLOW); 
    registerPanel.setLayout(null); 
    registerFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    registerFrame.setSize(1024,720); 
    registerFrame.setVisible(true); 

    title = new JLabel("Registeration Form"); 
    title.setFont(new Font("Arial",Font.PLAIN,25)); 
    title.setBounds(300,10,300,30); 
    registerPanel.add(title); 
    //<--labels 
    rollno = new JLabel("Roll Number:"); 
    rollno.setBounds(100,50,100,30); 
    rollno.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(rollno); 

    firstname = new JLabel("First Name:"); 
    firstname.setBounds(100,100,100,30); 
    firstname.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(firstname); 

    lastname = new JLabel("Last Name:"); 
    lastname.setBounds(100,150,100,30); 
    lastname.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(lastname); 

    fathername = new JLabel("Father's Name: "); 
    fathername.setBounds(100,200,100,30); 
    fathername.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(fathername); 

    contact = new JLabel("Contact:"); 
    contact.setBounds(100,250,100,30); 
    contact.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(contact); 

    alter_contact = new JLabel("Alternative Contact:"); 
    alter_contact.setBounds(100,300,100,30); 
    alter_contact.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(alter_contact); 

    course = new JLabel("Course"); 
    course.setBounds(100,350,100,30); 
    course.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(course); 

    section = new JLabel("Section"); 
    section.setBounds(100,400,100,30); 
    section.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(section); 

    address = new JLabel("Address:"); 
    address.setBounds(100,450,100,30); 
    address.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(address); 

    session = new JLabel("Session"); 
    session.setBounds(100,500,100,30); 
    session.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(session); 

    gender = new JLabel("Gender"); 
    gender.setBounds(100,550,100,30); 
    gender.setFont(new Font("Arial",Font.PLAIN,15)); 
    registerPanel.add(gender); 
    //--> end labels 
    //---. text field --> 
    rollnotxt = new JTextField(""); 
    rollnotxt.setBounds(300, 50, 250, 30); 
    registerPanel.add(rollnotxt); 

    firstnametxt = new JTextField(""); 
    firstnametxt.setBounds(300,100,250,30); 
    registerPanel.add(firstnametxt); 

    lastnametxt = new JTextField(""); 
    lastnametxt.setBounds(300,150,250,30); 
    registerPanel.add(lastnametxt); 

    fathernametxt = new JTextField(""); 
    fathernametxt.setBounds(300,200,250,30); 
    registerPanel.add(fathernametxt); 

    contacttxt = new JTextField(""); 
    contacttxt.setBounds(300,250,250,30); 
    registerPanel.add(contacttxt); 

    alter_contacttxt = new JTextField(""); 
    alter_contacttxt.setBounds(300,300,250,30); 
    registerPanel.add(alter_contacttxt); 

    coursetxt = new JTextField(""); 
    coursetxt.setBounds(300,350,250,30); 
    registerPanel.add(coursetxt); 

    sectiontxt = new JTextField(""); 
    sectiontxt.setBounds(300,400,250,30); 
    registerPanel.add(sectiontxt); 

    addresstxt = new JTextField(""); 
    addresstxt.setBounds(300,450,250,30); 
    registerPanel.add(addresstxt); 

    sessiontxt = new JTextField(""); 
    sessiontxt.setBounds(300,500,250,30); 
    registerPanel.add(sessiontxt); 

    gendertxt = new JTextField(""); 
    gendertxt.setBounds(300,550,250,30); 
    registerPanel.add(gendertxt); 
    //-- start textField--> 

    register = new JButton("Register"); 
    register.setBounds(300,600,150,50); 
    //   event on register button 
    register.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
       // store in database 
      try{ 
       Connection con = DriverManager.getConnection("jdbc:ucanaccess://Registeration.accdb"); // connection 
       Statement st = con.createStatement(); 
       String sql = "insert into Registeration values('"+ rollnotxt.getText() +"','"+firstnametxt.getText()+"','"+lastnametxt.getText()+"','"+ 
       lastnametxt.getText() + "','" + fathernametxt.getText()+"','"+contacttxt.getText()+"','"+alter_contacttxt.getText()+"','"+coursetxt.getText()+"','"+ 
         sectiontxt.getText()+"','"+addresstxt.getText()+"','"+sessiontxt.getText()+"','"+gendertxt.getText()+"')"; 

       st.executeQuery(sql); 
       if(st.executeUpdate(sql) > 0){ 
        JOptionPane.showMessageDialog(null,"Student Added"); 
       } 

       con.close(); 
      } 
      catch(SQLException se){ 
       System.out.println("Error:- "+ se.getMessage()); 
      } 

     } 
    }); 
    registerPanel.add(register); 

    controlDesk = new JButton("Control Desk"); 
    controlDesk.setBounds(500,600,150,50); 
    controlDesk.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      new ControlDesk(); 
     } 
    }); 
    registerPanel.add(controlDesk); 
}// constructor end 

} 

回答

2

MMMM ....記住你沒有使用JDBC-ODBC橋,所以配置Registeration.accdb ODBC數據源是無用的(以及代碼位置)。 您只需將完整路徑替換爲名稱Registeration.accdb(例如,jdbc:ucanaccess:// c://folder/Registeration.accdb)。並且你最好閱讀ucanaccess網站;-)

+0

這對我沒有用,我用這個:「jdbc:ucanaccess:// C:/Users/Pharma/Database3.accbd」有什麼想法? –

+0

.accbd或accdb? – jamadei

+0

是的,修改現在我得到「用戶缺乏特權或對象未找到:用戶」錯誤。 –