주요 내용 :
1.JDBC 연결 데이터베이스 (편집) 단계 (주로 6 단계가 있습니다)
1. 드라이버 등록 : class.forname ( "com.mysql.jdbc.driver"); JVM에로드를 표시했습니다
2. 연결을 얻으십시오 : (1) Param1 : 데이터베이스에 연결하려는 URL -----》 String url = "jdbc : mysql : // localhost : 3306/test?"+ "useUnicode = true & characterencoding = utf8";
param2 : 데이터베이스에 연결할 사용자 이름-》 String User = "H4";
PARAM3 : 데이터베이스에 연결하려는 비밀번호 ----》 String Pass = "111";
Connection Conn = DriverManager.getConnection (URL, USER, PASS); // DriverManager의 메소드 : GetConnection (문자열 URL, 문자열 사용자 이름, 문자열 암호)
(2) 다음으로 URL을 분석합니다. "JDBC (이 프로토콜은 JDBC로 시작) : MySQL (이것은 서브 프로토콜, 데이터베이스 관리 시스템 이름) : // localhost (데이터베이스 소스 주소) : 3306 (대상 포트)/테스트 (테이블 테이블 쿼리)"
"useUnicode = true & characterencoding = utf8"; 이는 차량 코드를 방지하기 위해 추가되며 유니 코드 문자 세트를 사용하여 UTF-8을 사용하여 편집하도록 지정됩니다.
3. 명령문 작성 명령문 개체 (세 가지 기본 메소드) : 명령문 stmt = conn.createstatement (); // 연결 인터페이스 아래의 메소드 : 문장 createStatement ()
PREPEDSTATEMENT PSTMT = CONN.PREPAREDSTATEMENT ();
CallableStatement CSTMT = Conn.prepareCall ( "{Call Demosp (?,?)}");
아래에서 분석하겠습니다. (1) 문과 준비된 지정 객체의 차이, 쿼리 매개 변수를 동적으로 설정할 수 있습니다.
(2) 준비된 매개 변수를 설정하는 방법을 준비합니다. 데이터베이스 매개 변수 유형이 Varchar 인 경우 SetString이 사용됩니다. 매개 변수 유형이 정수 인 경우 SetInt가 사용됩니다.
(3) callableStatement.setxxxx (paramerIndex, value) // 매개 변수 순서에서 값을 설정합니다
callableStatement.setxxxx (parametername, value) // 매개 변수 이름에 따라 값을 설정합니다. 이 이름은 저장 프로 시저를 정의 할 때 공식 매개 변수의 이름입니다.
(4) CALLABLESTATEMENT.REGISTEROUTPARAMETER 메소드는 저장 프로 시저의 출력 값을 수신하기 위해 저장 프로 시저의 출력 유형의 매개 변수를 선언하는 데 사용됩니다.
4. SQL 명령문 실행 : resultSet rs = stmt.executeQuery (SQL); 쿼리 문을 제외하고, executeQuery (); 다른 모든 것은 실행되었습니다 ();
명령문 인터페이스 아래의 메소드 :
부울 execute (String SQL) : 반환 값이 결과 세트 인 경우 true SQL 문을 실행합니다. 그렇지 않으면 false
resultSet executeQuery (String SQL) : SQL 명령문 실행, 리턴 값은 resultSet입니다.
int executeUpdate (String SQL) : SQL 문을 실행하고, 반환 값은 영향을받는 행의 수입니다.
5. 프로세스 결과 세트 : resultSet 객체의 getxxxx 메소드는 데이터베이스의 테이블의 필드 유형에 따라 다릅니다. 예를 들면 : varchar2는 getString에 해당합니다. 정수 인 경우 해당 방법은 getint/getlong입니다.
while (rs.next ()) {rs.getint (columnIndex); // 열 번호를 통해 필드 값을 가져옵니다. rs.getString (columnName); // resultSet 인터페이스에서 열 이름 공통 메소드를 통해 필드 값을 가져옵니다. resultSet afrlast ()에서 커서를 첫 번째 레코드 (앞면)로 이동하십시오. Cursor를 resultset의 마지막 레코드 (After)로 이동) 절대 (intcolumn) : Cursor를 첫 번째 행을 상대로 지정된 행으로 이동하고, Negative Number를 마지막 레코드와 관련하여 이전 () : 커서를 한 행을 위로 올리십시오. 다음 행을 아래로 아래로 이동하십시오. 수정할 수 없습니다.6. 리소스 닫기 : 작업이 완료된 후 JDBC를 닫으려면 JDBC 리소스를 해제해야합니다. 그러나 문을 닫고 먼저 내부에서 닫고 바깥쪽으로 닫는 것처럼 물체를 정의 할 때 순서는 반대입니다.
다음 예제 :
if (rs! = null) {// 1. 결과 세트를 닫으십시오. {rs.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (stmt! = null) {// 2. 선언 된 객체를 닫으십시오 {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (conn! = null) {// 3. 연결을 닫으십시오 (먼저 이전 1.2를 닫으십시오. 연결을 닫으십시오) {conn.close (); } catch (예외 e) {e.printstacktrace (); }}2. 아래는 간단한 (자세한) 쿼리 데이터 예입니다
패키지 javacore1; // 이것은 당신이 만든 패키지 이름입니다. import java.sql.callabestatement; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedstatement; import java.sql.resultset; // 왼쪽의 5 개는 프로그램을 작성할 때 가져올 패키지 이름입니다. Java.SQL에 따라 패키지가되어야합니다. import java.sql.sqlexception; import java.sql.statement; public class jdbc {// 클래스 정의 public static void main (string [] args) {// main method try {string driver = "com.mysql.jdbc.driver"; // 1. 드라이버 이름 드라이버를 driver로 driver로 정의하십시오. // 2. URL 정의; JDBC는 프로토콜입니다. MySQL은 서브 프로토콜입니다. 데이터베이스 시스템 관리 이름을 나타냅니다. LocalHost : 3306은 데이터베이스 소스의 주소 및 대상 포트입니다. 테스트는 내가 직접 만든 테이블의 위치이며, 당신은 표준으로 사용합니다. + "useUnicode = true & characterEncoding = utf8"; // 코드 방지 코드; USEUNICODE = 유니 코드 문자 세트를 사용하는 진정한 수단; 문자 encoding = utf8은 편집에 UTF-8을 사용하는 것을 의미합니다. 문자열 사용자 = "H4"; // 3. 사용자 이름을 정의하고 연결하려는 사용자를 쓰십시오. 문자열 pass = "111"; // 4. 사용자 비밀번호. 문자열 querysql = "select * from Employe"; // 5. 당신이 찾고 싶은 테이블 이름. class.forname (드라이버); // 6. java.lang 패키지 아래 클래스 클래스에서 드라이버를 등록하고 class.froname ()을 사용하십시오. 여기의 드라이버는 1 또는 class.forname에 정의 된 드라이버입니다 ( "com.mysql.jdbc.driver"); Connection Conn = DriverManager.getConnection (URL, USER, PASS); // 7. 데이터베이스 연결을 가져 와서 Java.sql의 DriverManager의 getConnectin (String URL, String Username, String Password)을 사용하여 // URL, 사용자, 전달 된 브래킷은 위에서 정의 된 2, 3 및 4 단계입니다. 문자 stmt = conn.createstatement (); // 8. SQL 문을 실행하기위한 명령문 개체 구성 : 주로 세 가지 구현 방법, 준비된 문구 인스턴스, 준비 상태 및 CallAblestement가 있습니다. 세 가지 구현 방법은 다음과 같습니다. stmt = con.createstatement (); // proadstatement pstmt = conn.preparestatement (SQL); // CallableStatement CSTMT = Conn.prepareCall ( "{Call Demosp (?,?)}"); resultSet rs = stmt.executeQuery (QuerySQL); // 9. SQL을 실행하고 끝까지 반환하십시오. resultSet executeQuery (String SqlString) : 결과 세트 (resultSet) 객체를 반환하는 데 사용됩니다. while (rs.next ()) {//10. 결과 Sets System.out.println ( "인사 번호 :"+rs.getString ( "Employee_id"))+"Senary :"+rs.getString ( "Salary")+"이름 :"+rs.ggstring ( "last_name"); // gettring ()를 사용하여 getstring ()를 사용하여 getstring ()를 사용합니다. ! = null) {// 11. 레코드 세트를 클로즈하십시오 {rs.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (stmt! = null) {// 12. 선언 된 객체 try {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (stmt! = null) {// 12. 선언 된 객체 try {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (conn! = null) {// 13. 연결을 닫으십시오 (먼저 이전 11.12를 닫으십시오. 그런 다음 문을 닫고 먼저 내부를 닫은 다음 최종적으로 가장 바깥 쪽을 닫습니다) 시도 {conn.close (); } catch (sqlexception e) {e.printstacktrace (); }}} catch (예외 e) {e.printstacktrace (); }}}}3.보다 직관적으로, 우리는 나중에 더 나은 작업을 용이하게하기 위해 데이터베이스 연결 및 릴리스 연결을 캡슐화합니다.
패키지 javacore1; import java.sql.connection; import java.sql.drivermanager; public class jdbc {public static void main (String [] args) {Connection Conn = getConnection ( "h4", "111"); // 데이터베이스를 가져옵니다 연결/*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 문자열 pass) {Connection conn = null; // 연결 객체 문자열 드라이버 = "com.mysql.jdbc.driver"; // 드라이버 클래스 이름 문자열 url = "jdbc : mysql : // localhost : 3306/test?" // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 데이터베이스 연결 릴리스 공용 정적 무효 공제 릴리스 릴리스 릴리스 릴리스 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}4. 쿼리, 삽입, 삭제 및 업데이트와 같은 데이터베이스 정보 처리의 11 가지 기능을 구현합니다.
1. 쿼리 데이터
패키지 javacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset; import java.sql.sqlexception; import java.sqlexception; import java.sql.statement; public query {public static void main (string [] args) {연결 conns = h4 ",", "" 데이터베이스 연결 쿼리 (Conn); // 메소드 이름 호출 데이터베이스 연결 릴리스 릴리스 릴리스 (CONN); // 데이터베이스 릴리스 연결} // 쿼리 메소드 정의 메소드 공개 정적 void query (Connection Conn) {String SQL = "직원에서 * 선택"; try {statement stmt = conn.createstatement (); // readestet rs = stmt.executeQuery (sql); // sql 문을 실행하고 끝을 반환하는 동안 (rs.next ()) {// 결과 세트를 전송하고 다음 줄 시스템으로 이동하여 다음 줄 ( "인사 번호 :"orpertyeee_id ")) } if (rs! = null) {try {rs.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (stmt! = null) {try {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (conn! = null) {try {conn.close (); } catch (sqlexception e) {e.printstacktrace (); }}} catch (예외 e) {e.printstacktrace (); }} // 데이터베이스 연결 공용 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 릴리스 데이터베이스 연결 공개 정적 무효 공제 릴리스 연결 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}} // 데이터를 쿼리하고 결과가 역순으로 표시되고, 역 순서 패키지 Javacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset; import java.sql.sqlexception; problic class query (problic rantatement) (string) conn = getConnection ( "h4", "111"); // 데이터베이스 연결 쿼리 가져 오기 (Conn); // 메소드 이름은 데이터베이스 연결 릴리스 릴리스를 호출합니다. releaseConnection (conn); // 데이터베이스 연결 릴리스} // 데이터 쿼리, 쿼리 메소드 정의 공개 정적 void query (Connection Conn) {String SQL = "직원에서 * 선택"; try {statement stmt = conn.createstatement (); // reatedStatement를 사용하여 rss = stmt.executequery (sql); // sql 문을 실행하고 끝 rs.fterlast ()를 반환 할 수도 있습니다. // 마지막 줄로 먼저 건너 뜁니다. } if (rs! = null) {try {rs.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (stmt! = null) {try {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} if (conn! = null) {try {conn.close (); } catch (sqlexception e) {e.printstacktrace (); }}}} catch (예외 e) {e.printstacktrace (); }} // 데이터베이스 연결 공용 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 릴리스 데이터베이스 연결 공개 정적 무효 공제 릴리스 연결 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}2. 데이터 삽입
패키지 Javacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; import java.sql.statement; public class insert {public static void main (문자열 [] args) {connection conn = getConnection ( "h3", "111111); // 데이터베이스 연결 가져옵니다. 연결 삽입 (Conn); // 메소드 이름 호출 데이터베이스 연결 릴리스 컨칭 (Conn); // 데이터베이스 릴리스} // 데이터 삽입 데이터 공개 정적 무효 인서 (Connection Conn) {try {string sql = "직원 삽입 // 데이터 삽입을위한 SQL 문 stmt1 = conn.createstatement (); // 정적 SQL 문을 실행하기위한 명령문 개체 생성 int count = stmt1.executeUpdate (sql); // 삽입 작업을 수행하고 삽입 된 데이터 시스템 수를 반환하기위한 SQL 문 ( "삽입" + count + "data"); // 삽입 작업 결과를 출력합니다 Conn.close (); // 데이터베이스 연결을 닫습니다} catch (sqlexception e) {e.printstacktrace (); }} // 데이터베이스 연결 공용 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (load) 드라이버 conn = drivermanager.getConnection (url, user, pass); // exception e) {e.printstacktrace (); } return conn; } // 데이터베이스 연결 릴리스 공용 정적 무효 공제 릴리스 릴리스 릴리스 릴리스 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}3. 데이터 삭제
패키지 javacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; import java.sql.statement; public class delete {public static void main (문자열 [] args) {connection conn = getConnection ( "H3", "); // 데이터베이스 연결 가져옵니다. 연결 삭제 (conn); // 메소드 이름 호출 데이터베이스 연결; 방출 연결 (Conn); // 릴리스 데이터베이스 연결} // 데이터 삭제 데이터 공개 정적 무효 삭제 (Connection Conn) {String SQL = "Employee_id = 1000009 인 직원에서 삭제"; try {statement stmt = conn.createstatement (); // 또는 preadStatement 메소드 stmt.executeupdate (sql); // sql 문을 실행하면 (stmt! = null) {try {stmt.close (); } catch (sqlexception e) {e.printstacktrace (); }}} catch (sqlexception e) {e.printstacktrace (); }}} // 데이터베이스 연결 공개 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 데이터베이스 연결 릴리스 공용 정적 무효 공제 릴리스 릴리스 릴리스 릴리스 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}4. 데이터 업데이트
패키지 javacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; import java.sql.statement; 공개 클래스 업데이트 {public static void main (문자열 [] args) {Connection conn = getConnection ( "h3", "111111); // 데이터베이스 연결 업데이트 (Conn); // 메소드 이름 호출 데이터베이스 연결 릴리스 릴리스 릴리스 (CONN); // 데이터베이스 릴리스 연결} // 데이터 업데이트 데이터 공개 정적 무효 업데이트 (Connection CONN) {String SQL = "직원 업데이트 직원을 SANERAY = 8000 Employee_id = 1000005"; try {statement stmt1 = conn.createstatement (); // 또는 preparedstatement method stmt1.executeupdate (sql); // sql statement를 실행합니다. } catch (sqlexception e) {e.printstacktrace (); }}} catch (sqlexception e) {e.printstacktrace (); }} // 데이터베이스 연결 공용 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 데이터베이스 연결 릴리스 공용 정적 무효 공제 릴리스 릴리스 릴리스 릴리스 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}5. 이전 (거래)
JDBC는 자동 커밋 폐쇄 연결을 통해 트랜잭션을 처리합니다.
Connection.setAutocommit (false);
거래 제출 :
Connection.commit ();
롤백 트랜잭션 롤백 부품 :
Connection.rollback (SavePoint);
모두 롤백 :
Connection.Rollback ();
패키지 Javacore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.statement; public class transcash {public static void main (string [] args) {Connection Conn = GetConnection ( "H3", "111111"); // 데이터베이스 연결 (Conn); // 메소드 이름은 데이터베이스 연결 릴리스 릴리스 릴리스 (Conn)를 호출합니다. // 데이터베이스 연결 릴리스} // 전송 (데이터 변환) (원래 데이터는 100과 500이지만이 기능을 구현 한 후에는 500과 100이됩니다. 실제로 데이터를 업데이트하고 데이터를 변경하는 것이 좋습니다) {Connection Conn) {Connection Conn) {NULL; try {conn.setautocommit (false); // 자동 제출 문자열 sql = "직원 업데이트 직원을 Salary = 500 인 Employee_id = 1000001"; stmt = conn.createstatement (); stmt.executeupdate (SQL); SQL = "직원 업데이트 직원을 SANARY = 100 SETERTEREE_ID = 1000002"; stmt.executeupdate (sql); // SQL 문을 실행하면 위의 두 급여는 // int i = 1/0; 그렇다면 작업이 완료되지 않기 때문에 완료되지 않습니다. 이것이 완전한 것이기 때문에, 실패가 적은 경우 conn.commit (); // commit transaction} catch (예외 e) {e.printstacktrace (); } 마침내 {try {if (stmt! = null) {stmt.close (); } catch (예외 e) {e.printstacktrace (); }}} // 데이터베이스 연결 공개 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 릴리스 데이터베이스 연결 공개 정적 무효 공제 릴리스 연결 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}6. 매개 변수없이 저장된 절차를 찾으십시오
PACKED JAVACORE1; import java.sql.callabestatement; import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; public static void main (문자열 [] args) {connection conns = getConnection ( "H3", ","); // 데이터베이스 연결 가져 오기 execproc (conn); // 메소드 이름 호출 데이터베이스 연결 릴리스 릴리스 릴리스 릴리스 (conn); // 데이터베이스 릴리즈 연결} // 관리되지 않은 저장 프로 시저를 호출합니다. public static void execproc (Connection Conn) {String sql = "{call resaisesAlary}"; try {callableStatement cstmt = conn.preparecall (SQL); cstmt.executeupdate (); } catch (sqlexception e) {e.printstacktrace (); }} // 데이터베이스 연결 공용 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 릴리스 데이터베이스 연결 공개 정적 무효 공제 릴리스 연결 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}7. 매개 변수로 저장된 절차를 찾으십시오
패키지 Javacore1; import java.sql.callableStatement; import java.sql.connection; import java.sql.drivermanager; import java.sql.types; public static void main (문자열 [] args) {connection conn = getConnection ( "H3", ","); // 데이터베이스 연결 가져 오기 int cnt = getMulti (conn); // 저장된 절차를 찾습니다. System.out.println ( "사람 번호 :" + CNT); 방출 연결 (Conn); // 릴리스 데이터베이스 연결} // 검색 프로세스에는 매개 변수가 있습니다. public static int getmulti (Connection Conn) {int dept_id = 1000001; int cnt = 0; 문자열 sql = "{Call calc_emp_count (?,?)}"; {callableStatement cstmt = conn.preparecall (sql); // 명령문 객체를 초기화하는 객체 cstmt.setint (1, dept_id); // callableStatement.setxxx (매개 변수, 값) 또는 readystatement.setxxx (number, value)와 비슷할 수 있습니다 (2, cnt); // cstmt.registeroutParameter (2, types.integer); // 출력 매개 변수 cstmt.executeUpdate (); // sql 문을 실행하는 cnt = cstmt.getint (2); // (cstmt! = null) {cstmt.close ()}}}}}}}}}}}}}} e.printstacktrace (); } 반환 cnt; } // 데이터베이스 연결 공용 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버 = "com.mysql.jdbc.driver"; // 드라이버 클래스 이름 문자열 url = "jdbc : mysql : // localhost : 3306/test?" // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 릴리스 데이터베이스 연결 공개 정적 무효 공제 릴리스 연결 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}8. 일반적인 처리
패키지 javacore1; import java.sql.connection; import java.sql.date; import java.sql.drivermanager; import java.sql.preparedstatement; import java.sql.sqlexcept; public static void main (string) getconnection ( "h3" " "111111"); // 데이터베이스 연결을 가져옵니다. planInsert (Conn); // 메소드 이름 호출 데이터베이스 연결 릴리스 컨칭 (Conn); // 공개 정적 void planInsert (Connection Conn)의 일반적인 처리} // 릴리스} // try {string sql = "test_user1에 삽입 (userId, username, loadingTime)" + "값 (?,?)"; // SQL 문을 삽입 할 수있는 sql statement preadstatement pstmt = conn.preparestatement (sql); Long StartTime = System.CurrentTimeMillis (); for (int i = 0; i <1000; i ++) {pstmt.setlong (1, i); PSTMT.SETSTRING (2, "사용자"+I); pstmt.setDate (3, 새 날짜 (System.CurrentTimeMillis ()); pstmt.executeupdate (); } system.out.println ( "총 시간 :"+(System.CurrentTimeMillis () -StartTime)); pstmt.close (); // 데이터베이스 연결을 닫습니다} catch (sqlexception e) {e.printstacktrace (); }} // 데이터베이스 연결 공용 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 릴리스 데이터베이스 연결 공개 정적 무효 공제 릴리스 연결 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}9. 배치 처리
원래 JDBC 트랜잭션 패턴을 얻으십시오.
부울 currentTransactionModle = con.getAutocommit ();
트랜잭션 모드로 설정 (자동 커밋) :
con.setAutocommit (false);
문자 stm = con.createstatement ();
세 가지 이종 SQL 문 :
문자열 sql1 = "id = 8"사용자에서 삭제;
문자열 sql2 = "사용자 세트 업데이트 이름 = 'java'여기서 id = 7";
문자열 sql3 = "사용자에 삽입 (이름, 암호) 값 ( 'jdbc', 'jdbc')";
명령문의 배치 처리 버퍼에 추가하십시오.
stm.addbatch (sql1);
stm.addbatch (sql2);
stm.addbatch (sql3);
배치 업데이트 수행 :
stm.executebatch ();
이 배치 업데이트에 대한 트랜잭션을 제출하십시오.
con.commit ();
원래 트랜잭션 모드에 답장 :
con.setAutocommit (currentTransactionModle);
패키지 javacore1; import java.sql.connection; import java.sql.date; import java.sql.drivermanager; import java.sql.preparedStatement; import java.sql.sqlexcept; public class static void main (string) {h3 " "111111"); // 데이터베이스 연결 가져옵니다 BatchInsert (Conn); // 메소드 이름 호출 데이터베이스 연결 릴리스 컨칭 (Conn); // 릴리스 데이터베이스 연결} // 배치 삽입 속도는 일반적인 처리 속도보다 빠릅니다. 공개 정적 void batchinsert (Connection Conn) {try {string sql = "test_user1 (userId, username, loadingTime)" + "값 (?,?)"; // data proadestatement pstmt = conn.preparestatement (SQL)를 삽입하는 SQL 문; Long StartTime = System.CurrentTimeMillis (); for (int i = 0; i <1000; i ++) {pstmt.setlong (1, i); PSTMT.SETSTRING (2, "사용자"+I); pstmt.setDate (3, 새 날짜 (System.CurrentTimeMillis ()); pstmt.addbatch (); // 배치 프로세스에 추가} int [] result = pstmt.executebatch (); System.out.println ( "총 시간 :"+(System.CurrentTimeMillis () -StartTime)); pstmt.close (); // 데이터베이스 연결을 닫습니다} catch (sqlexception e) {e.printstacktrace (); }} // 데이터베이스 연결 공용 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 릴리스 데이터베이스 연결 공개 정적 무효 공제 릴리스 연결 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}10. 페이지 매김 디스플레이
패키지 JavaCore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedStatement; import java.sql.resultset import java.sql.resultset; import java.sql.sqlexception; 공개 정적 void main (string) {h3 " "111111"); // 데이터베이스 연결 페이징 가져 오기 (Conn, 1,3); // 메소드 이름은 데이터베이스 연결을 호출하고 어떤 행을 표시 할 행을 정의 할 것인지 repeleaseconnection (conn)을 표시 할 행을 정의합니다. // 페이지 쿼리 공개 정적 빈약 한 페이징 (Connection, int startIndex, int total) {try {start sql = "select *?"; PRESEDSTATEMEN PSTMT = CONN.PREPARESTATEMENT (SQL); pstmt.setint (1, startIndex); pstmt.setint (2, 총); resultet rs = pstmt.executeQuery (); while (rs.next ()) {system.out.print ( "작업 번호 :"+rs.getint (1)); System.out.println ( "부서 번호 :"+rs.getint ( "Department_id")); } rs.close (); pstmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} // 데이터베이스 연결 공용 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // 데이터베이스 URL + "useUnicode = true & characterEncoding = utf8"; // garbled try {class.forname (driver); // register (로드) 드라이버 conn = drivermanager.getConnection (url, user, pass); // get} catch (exception e) {exprintstacktrace (); } return conn; } // 릴리스 데이터베이스 연결 공개 정적 무효 공제 릴리스 연결 (Connection Conn) {try {if (conn! = null) conn.close (); } catch (예외 e) {e.printstacktrace (); }}}11. 결과 세트를 스크롤 할 수 있습니다
패키지 JavaCore1; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedStatement; import java.sql.resultset import java.sql.resultset; import java.sql.sqlexception; public class scrpllresult {public static void main (문자열) {connection) {connection = " "111111"); // 데이터베이스 연결 가져 오기 SCRPLLRESULT (CONN); // 메소드 이름 호출 데이터베이스 연결 릴리스 릴리스 릴리스 (CONN); // 데이터베이스 연결 릴리스 연결} // 결과 세트를 공개 정적 무효 ScrollResult (Connection Conn)를 표시하도록 결과 세트를 스크롤합니다. // 스크롤을 스크롤 할 수 있습니다. // 동시성, 결과 세트는 읽기 전용이며 준비된 상태를 수정할 수 없습니다. preparedstatement pstmt = conn.preparestatement (sql, resultset.type_scroll_sensitive, resultset.concur_read_only); resultet rs = pstmt.executeQuery (); while (rs.next ()) {// travel System.out.print ( "작업 번호 :"+rs.getLong (1)); System.out.println ( "name"+rs.getstring ( "last_name")); } while (rs.previous ()) {// travel System.out.print ( "작업 번호 :"+rs.getLong (1)); System.out.println ( "작업 번호 :"+rs.getlong (1)); } rs.Absolute (6); // 라인으로 직접 이동 if (rs.next ()) {System.out.print ( "작업 번호 :"+rs.getLong (1)); System.out.println ( "......... 부서 번호 :"+rs.getstring ( "Department_id")); } rs.close (); pstmt.close (); } catch (sqlexception e) {e.printstacktrace (); }} // 데이터베이스 연결 공용 정적 연결 getConnection (문자열 사용자, 문자열 pass) {Connection Conn = null; // 연결 객체 문자열 드라이버를 선언합니다. // Database URL + "useUnicode=true&characterEncoding=UTF8";// Prevent garbled try { Class.forName(driver);// Register (load) driver conn = DriverManager.getConnection(url, user, pass);// Get database connection} catch (Exception e) { e.printStackTrace(); } return conn; }// Release database connection public static void releaseConnection(Connection conn) { try { if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); } }}五.把上面十一个放在一起当然最方便省事。(需要用谁,只需把前面的注释打开便行)
package javacore1;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.Date;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.Statement;import java.sql.Types;public class jdbcMySql {public static void main(String[] args) { Connection conn = getConnection("h3", "111111"); // Get database connection //query(conn); //1. Query data //insert(conn); //2. Insert data //delete(conn); //3. Delete data //update(conn); //4. Update data //transCash(conn); //5. Transfer//execProc(conn); //6. Find stored procedures without parameters //int cnt = getMulti(conn); //7. Find stored procedures with parameters //System.out.println("People number: " + cnt); //Find stored procedures with parameters //planInsert(conn); //8. Ordinary processing //batchInsert(conn); //9. Batch processing // paging(conn,1,3);//10. Pagination display//scrpllResult(conn);//11. The result set can be scrolled to releaseConnection(conn);// Release database connection}//1. Query data, define query method public static void query(Connection conn){ String Sql="select * from employees"; try{ Statement stmt=conn.createStatement(); // You can also use PreparedStatement to do ResultSet rs=stmt.executeQuery(Sql);//Execute the sql statement and return the end while(rs.next()){//Transfer the result set System.out.println("People number:"+rs.getString("employee_id")+"Salary:"+rs.getString("salary")); } if(rs !=null){ try{ rs.close(); } catch (SQLException e){ e.printStackTrace(); } } if(stmt !=null){ try{ stmt.close(); } catch(SQLException e){ e.printStackTrace(); } } if(conn !=null){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } } } catch(Exception e){ e.printStackTrace(); }}//2. Insert data public static void insert(Connection conn) { try { String sql = "insert into employees(employee_id,last_name,salary,department_id,userid)" + " values ('100010', 'xiaogou', '7000','004','9')"; // SQL statement Statement stmt1 =conn.createStatement(); // Create a Statement object for executing static SQL statements int count = stmt1.executeUpdate(sql); // Execute the SQL statement for insertion operation and return the number of inserted data System.out.println("Inserted" + count + "bar of data" into biao); //Output the processing result of the insertion operation conn.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } }//3. Delete data public static void delete(Connection conn){ String Sql = "delete from employees where employee_id=100009"; try { Statement stmt = conn.createStatement();// Or use the PreparedStatement method stmt.executeUpdate(Sql);// Execute the sql statement if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } catch (SQLException e) { e.printStackTrace(); } } }//4. Update data public static void update(Connection conn){ String Sql = "update employees set salary=8000 where employee_id=100005"; try { Statement stmt1 = conn.createStatement();//Or use PreparedStatement method stmt1.executeUpdate(Sql);//Execute the sql statement if (stmt1 != null) { try { stmt1.close(); } catch (SQLException e) { e.printStackTrace(); }} catch (sqlexception e) {e.printstacktrace (); } } //5. Transfer (data exchange) (The original data was 100 and 500, but after implementing this function, it becomes 500 and 100. In fact, to put it bluntly, it is to update the data and change the data) public static void transCash(Connection conn){ Statement stmt = null; try{ conn.setAutoCommit(false);//Close automatic submission String sql = "update employees set salary=500 where employee_id=100001"; stmt = conn.createStatement(); stmt.executeUpdate(sql); sql = "update employees set salary=100 where employee_id=100001"; stmt = conn.createStatement(); stmt.executeUpdate(sql); sql = "update employees set salary=100 where employee_id=100002"; stmt.executeUpdate(sql);//Execute the sql statement, and the above two salaries will be replaced by conn.commit();//Commit transaction}catch(Exception e){ e.printStackTrace(); } finally{ try{ if(stmt != null)stmt.close(); } catch(Exception e){ e.printStackTrace(); } } } }//6. Call the stored procedure without a parameter; public static void execProc(Connection conn){ String sql = "{call raisesalary}"; try { CallableStatement cstmt = conn.prepareCall(sql); cstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } //7. Find stored procedures with parameters public static int getMulti(Connection conn) { int dept_id = 100001; int cnt = 0; String sql = "{call calc_emp_count(?,?)}"; try { CallableStatement cstmt = conn.prepareCall(sql);//Initialize the Statement object cstmt.setInt(1, dept_id);//CallableStatement.setxxx(parameter, value) or (number, value), and PreparedStatement.setxxx(number, value) can only be like this cstmt.setInt(2, cnt); // cstmt.registerOutParameter(2, Types.INTEGER);//Declare the output parameter cstmt.executeUpdate();//Execute the sql statement cnt = cstmt.getInt(2);//Get the result if (cstmt != null) { cstmt.close();//Release the Statement object} } catch (Exception e) { e.printStackTrace(); } return cnt; }//8. Normal processing public static void planInsert(Connection conn) { try { String sql = "insert into test_user1(userid,username,loadingtime)" + " values (?,?,?)"; // SQL statement to insert data PreparedStatement pstmt=conn.prepareStatement(sql); long startTime=System.currentTimeMillis(); for(int i=0;i<1000;i++){ pstmt.setLong(1, i); pstmt.setString(2, "user"+i); pstmt.setDate(3, new Date(System.currentTimeMillis())); pstmt.executeUpdate(); } System.out.println("Total time taken: "+(System.currentTimeMillis() - startTime)); pstmt.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } } //9. The speed of batch insertion is faster than that of ordinary processing public static void batchInsert(Connection conn) { try { String sql = "insert into test_user1(userid,username,loadingtime)" + " values (?,?,?)"; // SQL statement that inserts data PreparedStatement pstmt=conn.prepareStatement(sql); long startTime=System.currentTimeMillis(); for(int i=0;i<1000;i++){ pstmt.setLong(1, i); pstmt.setString(2, "user"+i); pstmt.setDate(3, new Date(System.currentTimeMillis())); pstmt.addBatch();//Add to batch processing} int[] result=pstmt.executeBatch(); System.out.println("Total time consumed: "+(System.currentTimeMillis() - startTime)); pstmt.close(); //Close the database connection} catch (SQLException e) { e.printStackTrace(); } }//10. Pagination query public static void paging(Connection conn,int startIndex,int total){ try{ String sql="select * from employees limit ?,?"; PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setInt(1, startIndex); pstmt.setInt(2, total); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ System.out.print("work number: "+rs.getInt(1)); System.out.println("Department number: "+rs.getInt("department_id")); }rs.close(); pstmt.close(); }catch(SQLException e){ e.printStackTrace(); } }//11. The result set scrolls to display public static void scrollResult(Connection conn){ try{ String sql="select * from employees"; //The result set can be scrolled//concurrency, the result set is read-only, and the PreparedStatement pstmt=conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs=pstmt.executeQuery(); while(rs.next()){ //Travel System.out.print("work number: "+rs.getLong(1)); System.out.println("name"+rs.getString("last_name")); }while(rs.previous()){//Travel System.out.print("work number: "+rs.getLong(1)); System.out.println("salary"+rs.getInt("salary")); } rs.absolute(6);//Indicate which line to jump directly to if(rs.next()){ System.out.print("work number: "+rs.getLong(1)); System.out.println("........Department number: "+rs.getString("department_id")); } rs.close(); pstmt.close(); } catch(SQLException e){ e.printStackTrace(); } } //Database connection public static Connection getConnection(String user, String pass) { Connection conn = null;//Declare the connection object String driver = "com.mysql.jdbc.Driver";// Driver class name String url = "jdbc:mysql://localhost:3306/test?" // Database URL + "useUnicode=true&characterEncoding=UTF8";// Prevent garbled try { Class.forName(driver);// Register (load) driver conn = DriverManager.getConnection(url, user, pass);// Get database connection} catch (Exception e) { e.printStackTrace(); } return conn; }// Release database connection public static void releaseConnection(Connection conn) { try { if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); }}}六.安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(但是安装方法都是一样的)
在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是
打开eclipse
1.右击要导入jar包的项目,点properties
2.左边选择java build path,右边选择libraries
3.选择add External jars
4.选择jar包的按照路径下的确定后就行了。
Java连接MySQL的最新驱动包下载地址
http://www.mysql.com/downloads/connector/j
1.鼠标放在你建的根目录上面。右击,然后选择最下面的properties。
2.然后左边选择java build path,右边选择libraries ,在选择右边的add External jars ,选择jar包的路径,点击确定就可以了
3.装好后,图如下出现你要添加的包。