2010-01-08 3 views
0

Java를 사용하여 MS Access와 MySQL에 연결하는 데 문제가 있습니다. 내 문제는 내가 MySQL 용 드라이버를 찾을 수 없다는 것이다. 여기에 내 코드는 다음과 같습니다 따라서마이크로 소프트에서 ms 액세스와 mysql을 통합합니다

<%@ page import="java.sql.*" %> 

<% 
    Connection odbcconn = null; 
    Connection jdbcconn = null; 
    PreparedStatement readsms = null; 
    PreparedStatement updsms = null; 
    ResultSet rsread = null; 

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //load database driver 
    odbcconn = DriverManager.getConnection("jdbc:odbc:SMS"); //connect to database 
    readsms = odbcconn.prepareStatement("select * from inbox where Status='New'"); 
    rsread = readsms.executeQuery(); 
    while(rsread.next()){ 
     Class.forName("com.mysql.jdbc.Driver"); 
     jdbcconn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bakme", "root", ""); //connect to database 
     updsms = jdbcconn.prepareStatement("insert into inbox(sms,phone) values (?,?)"); 
     updsms.setString(1, rsread.getString("Message")); 
     updsms.setString(2, rsread.getString("Phone")); 
     updsms.executeUpdate(); 
    } 

%> 
+1

기본 서식을 사용할 때 코드를 읽는 것이 얼마나 쉬워 보이는지 – danben

+0

도움을 주셔서 감사합니다. – user235779

답변

2

, 당신은 MySQL의 JDBC 드라이버 클래스에 ClassNotFoundException 얻을? 그런 다음 해당 클래스를 포함하는 MySQL JDBC 드라이버 JAR 파일을 클래스 경로에 넣어야합니다. JSP/Servlet 응용 프로그램의 경우 클래스 패스는 각 웹 응용 프로그램의 /WEB-INF/lib 폴더 아래에 있습니다. 거기에 JAR 파일을 놓습니다. JDBC 드라이버는 Connector/J라고도합니다. here을 다운로드 할 수 있습니다.

그렇다고해서 JDBC와 JSP를 함께 사용하는 방법이 아닙니다. 이것은 JSP 파일에 속하지 않습니다. 실제 Java 클래스에서이 작업을 수행해야합니다. 또한 JDBC 코드는보다 강력하게 작성되어야하며 이제는 리소스가 누출됩니다.

+0

고맙습니다. 내 문제가 해결되었습니다. 내 말을 이해하지 못했던 방식으로 " JDBC 코드도 더 강력해야합니다. 이제 리소스가 새어 나옵니다. "Java 학습 과정에서 예제를 설명하거나 설명 할 수 있습니까? – user235779

+0

Duffymo의 대답을 확인하십시오. 자세한 내용은 Sun JDBC 튜토리얼 : http://java.sun.com/docs/books/tutorial/jdbc/index.html 및이 블로그 기사 : http://balusc.blogspot.com/2008/에서 확인할 수 있습니다. 07/dao-tutorial-data-layer.html – BalusC

1

BalusC는 다음과 같이 작성해야합니다.

Connection, Statement 및 ResultSet은 모두 유한 리소스를 나타냅니다. 그들은 메모리 할당과 같지 않습니다. 가비지 컬렉터가 그들을 정리하지 않습니다. 이 같은 코드에서 그렇게해야합니다 :

// Inside a method 
Connection connection = null; 
Statement statement = null; 
ResultSet rs = null; 

try 
{ 
    // interact with the database using connection, statement, and rs 
} 
finally 
{ 
    // clean up resources in a finally block using static methods, 
    // called in reverse order of creation, that don't throw exceptions 
    close(rs); 
    close(statement); 
    close(connection); 
} 

을하지만 서버 측 컴포넌트이 이동하기로 결정하는 경우, 당신은이 같은 코드에 큰 문제가되어있어 :

while(rsread.next()) 
{ 
    Class.forName("com.mysql.jdbc.Driver"); 
    jdbcconn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bakme", "root", ""); //connect to database 
    updsms = jdbcconn.prepareStatement("insert into inbox(sms,phone) values (?,?)"); 
    updsms.setString(1, rsread.getString("Message")); 
    updsms.setString(2, rsread.getString("Phone")); 
    updsms.executeUpdate(); 
} 

드라이버를 등록하고 연결을 작성하지 않고 연결을 작성하지 않고 Access에서 벗어나는 모든 행에 대한 루프 내에서 반복적으로 명령문을 준비하면 관계형 데이터베이스와 JDBC에 심각한 오해가 있음을 알 수 있습니다.

번 드라이버를 등록하고 수행해야 할 작업을 수행하고 사용한 모든 리소스를 정리해야합니다.

절대적으로 JSP에서이 작업을 수행해야하는 경우 페이지 내에서 연결을 설정할 필요가 없도록 두 데이터베이스 모두에 JNDI 데이터 소스를 사용하는 것이 좋습니다. 스크립틀릿 코드를 작성하면 안됩니다. JSTL을 익히고 <sql> 태그를 사용하는 것이 좋습니다.

+0

설명 해 주셔서 감사합니다. – user235779

0

use this link to download the MySql Driver 수 있습니다. 다운로드 한 후에는 사용중인 웹 서버의 클래스 경로에 있는지 확인해야합니다. 서버용 JDBC 드라이버 구성의 세부 사항은 서버마다 다릅니다. 보다 자세한 답변을 얻으려면 자세한 내용을 포함하도록 질문을 편집하십시오.

관련 문제