เว็บบอร์ดภายในศาลจังหวัดสงขลา นะจ๊ะ (-_-)

โปรแกรมของศาล ที่ดูแล => E-Board (Realtime) => ข้อความที่เริ่มโดย: admin ที่ 26/04/15

หัวข้อ: การติดต่อฐานข้อมูล Ms access จาก Java
เริ่มหัวข้อโดย: admin ที่ 26/04/15
ติดต่อฐานข้อมูล Ms access โดยใช้ภาษา java ทำยังไงครับ ต้อง set ค่าอะไรก่อนหรือเปล่า ขอตัวอย่างโปรแกรมหน่อยครับ ขอบคุณมาก

เอ จะใช้ dsnless ได้ไหมครับ ใครเคยลองบ้างครับ
หากทำได้ จะไม่ต้องสร้าง datasource แต่ทำเป็น ConnectionString เช่น

Driver={MySQL ODBC 3.51 Driver};DATABASE=MYDATABASE;SERVER=127.0.0.1;UID=USERNAME;PASSWORD=MYPASSWORD;PO
RT=3306;SOCKET=;OPTION=3;STMT=;

ทำได้ครับการทำอย่างมีนี้มีประโยชน์คือ Connect กับ Database ของเราโดยตรงเก็บ database ไว้ที่ไหนก้ได้เพียงแค่อ้างอิง path ให้ถูก ไม่จำเป็นต้องสร้าง Datasource สำหรับ Code ผมใช้อย่างนี้ครับ  :)

         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         conn = DriverManager.getConnection("jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+System.getProperty("user.dir")+"/db.mdb","","");
         stm = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);


ผมทราบแล้วครับ คุณ นายข้าวโพดหวาน ผมทดสอบไปๆมาๆ ระบุบ Path เต็มๆเลย
ถ้าเขียนใน JSP จะต้องระบุ Path เต็มๆๆ ไม่เช่นนั้นจะหา Data ไม่พบ ใช้ \ ก็ไม่ได้จะต้อง / เท่านั้น
หรือ \\ เช่น D:\\Programer\\wwwRoot\\jsp\\databasename.mdb
ถ้าเขียนใน Java ไม่ต้องระบุ Path เต็มๆๆ ก็ได้
ปกติผมเคยเขียนใน ASP , ASP.NET , PHP แบบ PHP ADODB ก็ไม่ต้องระบุ Path เต็มๆๆ ก็ได้
ขอบพระคุณมากๆๆครับผม

Connection connect = �DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access

Driver (*.mdb)};DBQ=D:/Programer/wwwRoot/jsp/databasename.mdb; uid=;pwd=;");
//or
Connection connect = �DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver

(*.mdb)};DBQ="+application.getRealPath("DB/databasename.mdb")+"; uid=;pwd=;");

หัวข้อ: Re: การติดต่อฐานข้อมูล Ms access จาก Java
เริ่มหัวข้อโดย: admin ที่ 26/04/15
ใช้ Data ชื่อนี้ครับ databasename.mdb ของ Access 2003 วางไว้ที่เดียวกันกับไฟล์ jsp

Connection connect =  DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ='databasename.mdb;'uid=;pwd=;");



เป็นแบบนี้ใช้งานได้ แต่มันของ MySQL

Connection connect =  DriverManager.getConnection("jdbc:odbc:DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=databasename; UID=root; PWD=");



ลองแบบนี้ครับ

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
                        Connection conn = DriverManager.getConnection("jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=C:\\ชื่อไพล์.mdb","user","pass");
                        Statement command = conn.createStatement();
                        ResultSet rs = command.executeQuery("select * FROM ....");



ปล. เอามาโพสเผื่อไว้เผื่อใครจะใช้


//Connec.java

public Connection  Con;public Statement Stmt;
private void Con(){
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(เปลื่ยนเป็นชื่อให้ตรงกับไพล์ของเราเช่น Connec.class.getName()).log(Level.SEVERE, null, ex);
        }
            String sql="jdbc:odbc:ชื่อODBC นะครับ";
        try {
            Con = DriverManager.getConnection(sql, "", "");
            Stmt = Con.createStatement();
        } catch (SQLException ex) {
            Logger.getLogger(เปลื่ยนเป็นชื่อให้ตรงกับไพล์ของเราเช่น Connec.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
private void Cos() throws SQLException, SQLException{
            Stmt.close();//การปิดการเชื่อมต่อนะครับ
            Con.close();
    }


ขอแชร์โค๊ดบางส่วนครับ เผื่อเป็นประโยชน์ในกรณีศึกษาครับ
 

 private void CheckUser() {
                char[] pass = tf_Password.getPassword();
                if (tf_Login.getText().equals("")) {
                        JOptionPane.showMessageDialog(dg_Login, "กรุณาป้อนชื่อด้วยครับ",
                                        "User Name Error", JOptionPane.WARNING_MESSAGE);
                } else if (pass.length == 0) {
                        JOptionPane.showMessageDialog(dg_Login, "กรุณาป้อนรหัสผ่านด้วยครับ",
                                        "Password Error", JOptionPane.WARNING_MESSAGE);
                } else {
                        String password = "";
                        for (int i = 0; i < pass.length; i++) {
                                password = password + pass;
                        }
                        String sqlReadtblLogin = "SELECT tblLogin.*, tblEmp.EmpFirstName," +
                                        "tblEmp.EmpLastname, tblDepartment.*" +
                                        " FROM tblPosition INNER JOIN" +
                                        "(((tblDepartment INNER JOIN tblDependOn ON" +
                                        " tblDepartment.DepartmentID=tblDependOn.DepartmentID)" +
                                        " INNER JOIN tblEmp ON" +
                                        " tblDependOn.DependID=tblEmp.DependID)" +
                                        " INNER JOIN tblLogin ON tblEmp.EmpID=tblLogin.EmpID)" +
                                        " ON tblPosition.PositionId=tblDependOn.PositionId" +
                                        " WHERE (((tblLogin.UserName)= '" + tf_Login.getText() + "')" +
                                        " AND ((tblLogin.Password)= '" + password + " '))";

                        try {
                                String Url = "jdbc:odbc:Project";
                                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                                Connection con = DriverManager.getConnection(Url);
                                Statement stmt = con.createStatement(
                                                ResultSet.TYPE_SCROLL_SENSITIVE,
                                                ResultSet.CONCUR_READ_ONLY);
                                ResultSet rec = stmt.executeQuery(sqlReadtblLogin);
                                rec.first();
                                if (rec.getRow() == 0) {
                                        JOptionPane.showMessageDialog(dg_Login, "User name และ" +
                                                        " Password ไม่ถูกต้อง",
                                                        "Password Error", JOptionPane.ERROR_MESSAGE);
                                } else {
                                        if (!rec.getString("DepartmentName")
                                                        .equals("Stock Warehouse")) {
                                                String st = "โปรแกรมนี้ใช้ได้เฉพาะพนักงานแผนก" +
                                                                " Stock Warehouse เท่านั้น\n";
                                                st = st + "พนักงานแผนก" + rec.getString("DepartmentName")
                                                                + "ไม่สามารถใช้งานได้";
                                                JOptionPane.showMessageDialog(dg_Login, st,
                                                                "Password Error", JOptionPane.ERROR_MESSAGE);
                                        } else {
                                                dg_Login.dispose();
                                                dg_Login = null;
                                        }
                                }
                                rec.close();
                                con.close();
                        } catch (SQLException e) {
                                JOptionPane.showMessageDialog(null, e.getMessage(),
                                                "SQL Error", JOptionPane.ERROR_MESSAGE);
                        } catch (ClassNotFoundException e) {
                                JOptionPane.showMessageDialog(null, e.getMessage(),
                                                "ClassNotFound Error", JOptionPane.ERROR_MESSAGE);
                        }
                }
        }