เว็บบอร์ดภายในศาลจังหวัดสงขลา นะจ๊ะ (-_-)
โปรแกรมของศาล ที่ดูแล => E-Board (Realtime) => ข้อความที่เริ่มโดย: 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=;");
-
ใช้ 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);
}
}
}