Java java지도 시간 jdbc로 데이터베이스에 연결하는 방법은 무엇입니까? (코드 포함)

jdbc로 데이터베이스에 연결하는 방법은 무엇입니까? (코드 포함)

Feb 26, 2019 pm 04:30 PM
jdbc 데이터베이스에 연결

이 기사에서는 jdbc를 데이터베이스에 연결하는 방법을 설명합니다. (코드 첨부) 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

JDBC 소개

JDBC의 전체 이름은 Java Data Base Connectivity(Java 데이터베이스 연결)이며, 다양한 데이터베이스에 대한 통합 액세스를 제공할 수 있습니다. JDBC는 Sun에서 개발한 데이터베이스 액세스 프로그래밍 인터페이스 세트입니다. Java 언어로 작성되었으므로 크로스 플랫폼 특성이 뛰어납니다. JDBC를 사용하여 작성된 데이터베이스 애플리케이션은 다른 플랫폼에서 다른 애플리케이션을 작성할 필요 없이 Java를 지원하는 모든 플랫폼에서 실행할 수 있습니다. [동영상 튜토리얼 추천: Java 튜토리얼]

JDBC 프로그래밍 단계

(1) 드라이버 로드:

드라이버 패키지 다운로드: http://dev.mysql.com/downloads/connector/j/

압축을 풀고 jar 파일을 받으세요. 이 파일을 Java 프로젝트 디렉터리 Java Resources/Libraries/, → buildpath에 복사합니다.

(2) 데이터베이스 연결 얻기

(3) Create State 개체:

(4) 데이터베이스에 SQL 명령 보내기

(5) 데이터베이스에서 반환된 결과 처리(ResultSet 클래스)

package com.baidu.emp.jdbcTest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import com.mysql.jdbc.Driver;
/**
 * 开始使用jdbc连接数据库
 * @author Admin
 *
 */
public class Test001 {

    public static void main(String[] args) throws Exception {

        /**
         * 加载驱动
         */
        // 方法一:
        /*
         * import java.sql.DriverManager; import com.mysql.jdbc.Driver;
         */
        // Driver driver = new Driver();
        // DriverManager.registerDriver(driver);

        // 方法二:(推荐使用)
        Class.forName("com.mysql.jdbc.Driver");

        /**
         * 创建链接
         */
        String url = "jdbc:mysql://localhost:3306/testjdbc";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url, user, password);

        // 创建statement对象
        Statement statement = connection.createStatement();

        /**
         * 执行SQL,获取结果集
         */
        String sql = "select * from test01";
        ResultSet result = statement.executeQuery(sql);

        // 遍历结果集
        while (result.next()) {
            String name = result.getString("name");
            int id = result.getInt("id");
            System.out.println(name + "\t" + id);
        }

        /**
         * 关闭链接,释放资源
         */
        result.close();
        statement.close();
        connection.close();
    }
}
로그인 후 복사

SQL 주입 방지 대신 prepareStatement

package com.boya.emp.jdbcTest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
 * SQL注入,使用prepareStatement对象进行预编译
 * @author Admin
 *
 */
public class Test002 {

    public static void main(String[] args) throws Exception {

        /**
         * 加载驱动
         */
        Class.forName("com.mysql.jdbc.Driver");

        /**
         * 创建链接
         */
        String url = "jdbc:mysql://localhost:3306/testjdbc";
        String user = "root";
        String password = "root";
        Connection connection = DriverManager.getConnection(url, user, password);

        // 写SQL 
        String sql = "select * from test01 where id = ?";
        //创建statement对象,预编译
        PreparedStatement statement = connection.prepareStatement(sql);
        //设置参数
        statement.setInt(1, 2);
        /**
         * 执行SQL,获取结果集
         */
        ResultSet result = statement.executeQuery();

        // 遍历结果集
        while (result.next()) {
            String name = result.getString("name");
            int id = result.getInt("id");
            System.out.println(name + "\t" + id);
        }

        /**
         * 关闭链接,释放资源
         */
        result.close();
        statement.close();
        connection.close();
    }
}
로그인 후 복사

를 사용하여 코드를 최적화하고, 구성 파일, 도구 클래스를 설정하고, 추가 및 삭제를 구현하여 확인

구성 파일을 추가하여 데이터베이스 수정 및 사용자 로그인을 용이하게 하세요. . .

jdbc.properties(구성 파일 이름)

driverName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/testjdbc
userName=root
password=root
로그인 후 복사

구성 파일 작성 시 공백, 따옴표 등을 사용할 수 없다는 점에 유의하세요.

Tool 클래스: 향상된 코드 재사용성

package com.baidu.emp.utils;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import org.junit.Test;



public class JdbcUtils {

    static String driverClassName;
    static String url;
    static String user;
    static String password;

    static {
        // 创建配置文件对象
        Properties properties = new Properties();
        // 加载配置文件输入流
        InputStream inputStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
        // 重新加载配置文件
        try {
            properties.load(inputStream);
            // 获取配置文件的值
            driverClassName = properties.getProperty("driverName");
            url = properties.getProperty("url");
            user = properties.getProperty("userName");
            password = properties.getProperty("password");
            Class.forName(driverClassName);

        } catch (Exception e) {
            // 抛出异常
            throw new RuntimeException(e);
        }
    }

    /**
     * 获取连接
     */
    @Test
    public void testName() throws Exception {
        
        System.out.println(driverClassName);
    }
    public static Connection getConnection() {
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            // 抛出异常
            throw new RuntimeException(e);
        }
        return connection;
    }

    /**
     * 关闭链接,释放资源
     */
    public static void close(Connection connection, PreparedStatement statement, ResultSet resultSet) {

        try {
            if (resultSet != null) {
                resultSet.close();
            }
            resultSet = null; // 垃圾及时清除
            //注意,不要弄成死循环
            close(connection, statement);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    }

    /**
     * 增删改释放资源
     */
    public static void close(Connection connection, PreparedStatement statement) {

        try {
            if (connection != null) {
                connection.close();
            }
                
            connection = null;
            if (statement != null) {
                statement.close();
            }
            statement = null;

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    }

}
로그인 후 복사

테스트 추가, 삭제, 수정 및 확인 :

package com.baidu.emp.jdbcTest;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.baidu.emp.utils.JdbcUtils;

/**
 * 使用jdbcUtils连接数据库进行增删改查
 * 
 * @author Admin
 *
 */
public class Test003 {

    // 初始化值
    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet result = null;

    @Before
    public void start() throws Exception {
        // 创建链接
        connection = JdbcUtils.getConnection();
        System.out.println("创建链接");
    }

    @After
    public void end() throws Exception {
        // 关闭链接
        JdbcUtils.close(connection, statement, result);
        System.out.println("关闭链接");
    }
    
    /**
     *插入数据
     * @throws Exception
     */
    @Test
    public void add() throws Exception {
        String sql = "insert into test01 values(null,?)";
        statement = connection.prepareStatement(sql);
        statement.setString(1, "李四");
        int result = statement.executeUpdate();
        if (result!=0) {
            System.out.println("添加成功");
        }
    }
    /**
     * 删除数据
     * @throws Exception
     */
    @Test
    public void del() throws Exception {
        String sql = "delete from test01 where id =?";
        statement = connection.prepareStatement(sql);
        statement.setInt(1,3);
        int result = statement.executeUpdate();
        if (result!=0) {
            System.out.println("删除成功");
        }
    }
    /**
     * 修改数据
     * @throws Exception
     */
    @Test
    public void change() throws Exception {
        String sql = "update test01 set name = ? where id = ?";
        statement = connection.prepareStatement(sql);
        statement.setString(1, "张飞");
        statement.setInt(2, 2);
        int result = statement.executeUpdate();
        if (result!=0) {
            System.out.println("修改成功");
        }
    }
    
    /**
     * 查询全部数据
     * @throws Exception
     */
    @Test
    public void findAll() throws Exception {
        String sql = "select id , name from test01";
        statement = connection.prepareStatement(sql);
        result = statement.executeQuery();
        if (result.next()) {
            System.out.println("查询成功");
        }
    }
    
    /**
     * 条件查询数据
     * @throws Exception
     */
    @Test
    public void findOne() throws Exception {
        String sql = "select id , name from test01 where id = ?";
        statement = connection.prepareStatement(sql);
        statement.setInt(1, 2);
        result = statement.executeQuery();
        if (result.next()) {
            System.out.println("查询成功");
        }
    }

}
로그인 후 복사

동료들이 오해가 있는 부분을 지적해 주셨는데요, 정말 감사합니다

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! !

위 내용은 jdbc로 데이터베이스에 연결하는 방법은 무엇입니까? (코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Java8(291) 이후에는 TLS1.1이 비활성화되고 JDBC가 SSL을 사용하여 SqlServer2008에 연결할 수 없습니다. 문제를 해결하는 방법은 무엇입니까? Java8(291) 이후에는 TLS1.1이 비활성화되고 JDBC가 SSL을 사용하여 SqlServer2008에 연결할 수 없습니다. 문제를 해결하는 방법은 무엇입니까? May 16, 2023 pm 11:55 PM

Java8-291 이후에는 TLS1.1이 비활성화되어 JDBC가 SSL을 사용하여 SqlServer2008에 연결할 수 없습니다. java.security 파일을 수정하는 방법은 무엇입니까? 1. jre의 java.security 파일을 찾으십시오. jre인 경우 lib/security의 {JAVA_HOME}/jre/로 이동합니다. 예를 들어 ????C:\ProgramFiles\Java\jre1.8.0_301\lib\security입니다. Eclipse 그린 설치가 필요 없는 휴대용 버전인 경우. , 설치 폴더(예:????xxx\plugins\org)에서 java.security를 ​​검색하세요.

Java 오류: JDBC 오류, 해결 및 방지 방법 Java 오류: JDBC 오류, 해결 및 방지 방법 Jun 24, 2023 pm 02:40 PM

Java가 널리 적용되면서 Java 프로그램이 데이터베이스에 연결할 때 JDBC 오류가 자주 발생합니다. JDBC(JavaDatabaseConnectivity)는 데이터베이스에 연결하는 데 사용되는 Java의 프로그래밍 인터페이스입니다. 따라서 JDBC 오류는 Java 프로그램이 데이터베이스와 상호 작용할 때 발생하는 오류입니다. 다음은 가장 일반적인 JDBC 오류 중 일부와 이를 해결하고 방지하는 방법입니다. ClassNotFoundException 이것은 가장 일반적인 JDBC입니다.

Java에서 JDBC 일괄 삽입을 구현하는 방법 Java에서 JDBC 일괄 삽입을 구현하는 방법 May 18, 2023 am 10:02 AM

1. JDBC에서 ExecuteBatch 메소드는 여러 개의 dml 문을 일괄적으로 실행할 수 있으며, 개별적으로 ExecuteUpdate를 실행하는 것보다 효율성이 훨씬 높다는 점을 설명합니다. mysql과 oracle에서 일괄 실행을 구현하는 방법은 무엇입니까? 이 기사에서는 이에 대한 원리를 소개합니다. 2. 실험 소개 이 실험은 다음 세 단계를 통해 수행됩니다: a. mysql에서 jdbc의 일괄 실행과 단일 실행에 소요되는 시간을 기록합니다. b. oracle에서 jdbc의 일괄 실행과 단일 실행에 소요되는 시간을 기록합니다. c. oracleplsql의 일괄 실행과 단일 실행을 기록합니다. 실행 시간이 많이 걸리는 관련 Java 및 데이터베이스 버전은 다음과 같습니다. Java17, Mysql8, Oracle

JDBC API를 사용하여 MySQL 데이터베이스에 연결하는 Java에서 발생하는 일반적인 문제 JDBC API를 사용하여 MySQL 데이터베이스에 연결하는 Java에서 발생하는 일반적인 문제 Jun 10, 2023 am 09:55 AM

최근 몇 년 동안 Java 언어가 점점 더 널리 사용되고 있으며 JDBCAPI는 Java 응용 프로그램이 데이터베이스와 상호 작용하는 창의적인 방법입니다. JDBC는 Java 응용 프로그램이 모든 데이터베이스에 연결할 수 있도록 하는 ODBC라는 개방형 데이터베이스 연결 표준을 기반으로 합니다. . 관리 시스템(DBMS). 그 중 MySQL은 널리 사용되는 데이터베이스 관리 시스템입니다. 그러나 개발자는 MySQL 데이터베이스에 연결할 때 몇 가지 일반적인 문제에 직면하게 됩니다. 이 기사는 JDBCAPI 연결 M을 소개하는 것을 목표로 합니다.

MySQL에서 JDBC 프로그래밍을 분석하는 방법 MySQL에서 JDBC 프로그래밍을 분석하는 방법 May 30, 2023 pm 10:19 PM

1. 데이터베이스 프로그래밍을 위한 전제 조건 Java, C, C++, Python 및 Oracle, MySQL, SQLServer와 같은 기타 데이터베이스 및 기타 데이터베이스 드라이버 패키지와 같은 프로그래밍 언어: 예를 들어 다양한 데이터베이스는 다양한 프로그래밍 언어에 해당하는 다양한 데이터베이스 드라이버 패키지를 제공합니다. : MySQL은 Java 기반으로 MySQL을 운영하는데 필요한 Java 드라이버 패키지 mysql-connector-java를 제공한다. 마찬가지로 Java 기반의 Oracle 데이터베이스를 운영하려면 Oracle의 데이터베이스 드라이버 패키지 ojdbc가 필요합니다. 2. 자바 데이터베이스 프로그래밍: JDBCJDBC, JavaDatabaseConnectiv

PHP를 사용하여 데이터베이스의 처음 몇 개의 레코드를 읽는 방법은 무엇입니까? PHP를 사용하여 데이터베이스의 처음 몇 개의 레코드를 읽는 방법은 무엇입니까? Mar 22, 2024 am 10:03 AM

PHP를 사용하여 데이터베이스의 처음 몇 개의 레코드를 읽는 방법은 무엇입니까? 웹 애플리케이션을 개발할 때 데이터베이스에서 데이터를 읽어 사용자에게 표시해야 하는 경우가 많습니다. 때로는 전체 내용이 아닌 데이터베이스의 처음 몇 개의 레코드만 표시해야 하는 경우도 있습니다. 이 기사에서는 PHP를 사용하여 데이터베이스의 처음 몇 개의 레코드를 읽는 방법과 특정 코드 예제를 제공하는 방법을 설명합니다. 먼저, 데이터베이스에 연결하고 작업하려는 테이블을 선택했다고 가정합니다. 다음은 간단한 데이터베이스 연결 예입니다.

Java로 데이터베이스에 연결할 때 SQLException을 처리하는 방법은 무엇입니까? Java로 데이터베이스에 연결할 때 SQLException을 처리하는 방법은 무엇입니까? Jun 24, 2023 pm 09:23 PM

Java 프로그램에서 데이터베이스에 연결하는 것은 매우 일반적인 작업입니다. 기성 클래스 라이브러리와 도구를 사용하여 데이터베이스에 연결할 수 있지만 프로그램 개발 중에 다양한 비정상적인 상황이 계속 발생할 수 있으며 그 중 SQLException이 그 중 하나입니다. SQLException은 Java에서 제공하는 예외 클래스로 쿼리문 오류, 테이블 존재하지 않음, 연결 끊김 등 데이터베이스에 접근할 때 발생하는 오류를 설명합니다. Java 프로그래머, 특히 JDBC(Java Data

Hibernate 프레임워크와 JDBC의 차이점은 무엇입니까? Hibernate 프레임워크와 JDBC의 차이점은 무엇입니까? Apr 17, 2024 am 10:33 AM

Hibernate와 JDBC의 차이점: 추상화 수준: Hibernate는 높은 수준의 객체 매핑과 쿼리 생성을 제공하는 반면 JDBC는 수동 코딩이 필요합니다. 객체 관계형 매핑: Hibernate는 Java 객체와 데이터베이스 테이블을 매핑하지만 JDBC는 이 기능을 제공하지 않습니다. 쿼리 생성: Hibernate는 쿼리 생성을 단순화하기 위해 HQL을 사용하는 반면, JDBC는 복잡한 SQL 쿼리 작성이 필요합니다. 트랜잭션 관리: Hibernate는 트랜잭션을 자동으로 관리하지만 JDBC는 수동 관리가 필요합니다.

See all articles