ホームページ Java &#&チュートリアル jdbcでデータベースに接続するにはどうすればよいですか? (コード付き)

jdbcでデータベースに接続するにはどうすればよいですか? (コード付き)

Feb 26, 2019 pm 04:30 PM
jdbc データベースに接続する

この記事では、jdbc をデータベースに接続する方法について説明します。 (コードを添付します)。困っている友人が参考になれば幸いです。

JDBC の概要

JDBC の正式名は次のとおりです: Java Database Connectivity (Java データベース接続)。これにより、次への統合アクセスが提供されます。さまざまなデータベース。 JDBC は、sun によって開発されたデータベース アクセス プログラミング インターフェイスのセットであり、SQL レベルの API です。 Java 言語で記述されているため、JDBC を使用して記述されたデータベース アプリケーションは、異なるプラットフォームで異なるアプリケーションを作成することなく、Java をサポートする任意のプラットフォームで実行できます。 [ビデオチュートリアルの推奨: Java チュートリアル]

JDBC プログラミング手順

(1) ドライバーをロードします:

ドライバー パッケージをダウンロードします: http://dev.mysql.com/downloads/connector/j/

解凍して jar ファイルを取得します。このファイルを Java プロジェクト ディレクトリ Java Resources/Libraries/ → buildpath にコピーします。

(2) データベース接続の取得

(3) Statement オブジェクトの作成:

(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
ログイン後にコピー

設定ファイルを記述するときは、途中にスペースや引用符を含めることはできないことに注意してください。

ツール クラス: 拡張コードの複雑さ 使いやすさ

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 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がjdbcでデータベースに接続するにはどうすればよいですか? (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

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 グリーンのインストール不要のポータブル バージョンの場合、インストール フォルダーで java.security を検索します (例: ????xxx\plugins \org)

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. 実験の導入 この実験は、次の 3 つの手順で実行されます: a. mysql で jdbc バッチ実行と単一実行にかかる時間を記録する; b. oracle で jdbc バッチ実行と単一実行にかかる時間を記録する; c. jdbc バッチ実行と単一実行にかかる時間を記録するoracleplsql のバッチ実行と単一実行を記録します。実行に時間がかかる関連する Java およびデータベースのバージョンは次のとおりです: Java17、Mysql8、Oracle

JDBC API を使用して MySQL データベースに接続する Java で発生する一般的な問題 JDBC API を使用して MySQL データベースに接続する Java で発生する一般的な問題 Jun 10, 2023 am 09:55 AM

近年、Java 言語のアプリケーションはますます普及しており、JDBCAPI は、Java アプリケーションがデータベースと対話するための独創的な方法です。JDBC は、ODBC と呼ばれるオープン データベース接続標準に基づいており、Java アプリケーションは任意のデータベースに接続できます。データベース管理システム (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. Java データベース プログラミング: JDBCJDBC、JavaDatabaseConnectiv

PHP を使用してデータベース内の最初の数レコードを読み取るにはどうすればよいですか? PHP を使用してデータベース内の最初の数レコードを読み取るにはどうすればよいですか? Mar 22, 2024 am 10:03 AM

PHP を使用してデータベース内の最初の数レコードを読み取るにはどうすればよいですか? Web アプリケーションを開発するとき、多くの場合、データベースからデータを読み取り、ユーザーに表示する必要があります。場合によっては、コンテンツ全体ではなく、データベース内の最初の数レコードだけを表示する必要があることがあります。この記事では、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