[JDBCノート]JDBCのクイックスタート

JDBC:javaデータベース接続javaはデータベースに接続します。

sun companyは、すべてのリレーショナルデータベースを操作するルール(インターフェイス)を定義します。

統合されたJavaコードを使用すると、すべてのリレーショナルデータベースを操作できます。

各データベースベンダーは、インターフェイスを実装し、データベースドライバーjarパッケージを提供します。実行される実際のコードは、ドライバーjarパッケージの実装クラスです。


ステップ:

1.ドライバーjarパッケージをインポートします

ディレクトリの構築->パッケージの貼り付け->ライブラリとして追加

2.ドライバを登録します(書き込みできません)

3.接続オブジェクトを取得しますデータベースの接続

4.SQLを定義します

5.SQLステートメントを実行するオブジェクトステートメントを取得します

6. sqlを実行し、戻り結果を実行します

7.処理結果

8.リソースを解放します


DriveManager:ドライブ管理オブジェクト

特徴:

ドライバーを登録します(どのデータベースドライバーjarパッケージを使用するかをプログラムに指示します)

static void registerDriver(Driver driver):指定されたドライバーDriveManagerを登録します

写法:Class.forName( "com.mysql.jdbc.Driver");

原則:ソースコードを表示すると、com.mysql.jdbc.Driverに静的コードブロックがあり、DriveManagerのregisterDriverメソッドが呼び出されていることがわかります。

(mysql 5以降、ドライバーを登録する必要はありません。ドライバーは自動的に登録されます。作成することをお勧めします)

データベース接続を取得する

static Connection getConnection(String url、String user、String password)

url:接続のパスを指定します 

構文:jdbc:mysql:// ip address:port number / database name

接続がローカルmysqlサーバーへの接続であり、mysqlサービスのデフォルトポートが3306である場合。URLは次のように省略できます。

jdbc:mysql:///データベース名

接続:データベース接続オブジェクト

sqlを実行するオブジェクトを取得します。

ステートメントcreateStatement()

PrepareStatement prepareStatement(String sql)

事務を管理する:

*オープントランザクション

setAutoCommit(boolean autoCommit):このメソッドを呼び出して、パラメーターをfalseに設定します。つまり、トランザクションを開きます。

*トランザクションをコミットする

専念()

*ロールバックトランザクション

rollback()

ステートメント:静的SQLステートメントを実行するために使用されます

SQLを実行します。

int executeUpdate(String sql):DML(挿入、更新、削除)ステートメント、DDL(作成、削除)ステートメントを実行します

戻り値:影響を受ける行数

DMLステートメントの成功は、影響を受ける行の数(> 0)によって判断できます。

ResultaSet executeQuery(String sql):DQL(select)ステートメントを実行します

ResultSet:クエリ結果をカプセル化する結果セットオブジェクト

カーソルはヘッダー位置から始まります

boolean next():カーソルが行を下に移動して、データがあるかどうかを判別します

getXxx():データを取得します。Xxxはデータ型を表します

getInt、getString、get...。

パラメータ:

列番号を表すintを渡します(1から始まります)

列の名前を表す文字列を渡しますgetString( "sex")

ResultSetトラバーサル:

JDBCツールクラス:JDBCUtils(簡略化された記述)

public class JDBCUtils {
    private static String url;
    private static String user;
    private static String password;
    //配置文件只读取一次,静态代码块
    static{
        //读取资源文件,获取值
        Properties properties=new Properties();
        //加载文件
        try {
            properties.load(new FileReader("src/jdbc.properties"));
            url=properties.getProperty("url");
            user=properties.getProperty("user");
            password=properties.getProperty("password");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //获取连接
    public static Connection getConnection()  {
        try {
            return DriverManager.getConnection(url,user,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    //释放资源
    public static void close(Statement st,Connection ct){
        if(st!=null){
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(ct!=null){
            try {
                ct.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void close(ResultSet rs,Statement st,Connection ct){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        close(st,ct);
    }

}

PreparedStatement:SQLオブジェクトを実行します

SQLインジェクションの問題:

SQLをスプライシングする場合、文字列のスプライシングに関係するいくつかの特別なsqlキーワードがあり、セキュリティ上の問題が発生します。

解決策:PreparedStatementを使用してオブジェクトを表し、プリコンパイルされたSQLステートメントを実行します(パラメーターはプレースホルダーとして?を使用します)

使用するSQLパラメータを定義するとき?プレースホルダーとして

select *from user where username = ? and password = ?

SQLステートメントを実行するオブジェクトを取得します

PrepareStatement pre=Connection.prepareStatement(String sql);

 ?に値を割り当てます:

setXxx(参数1,参数2)
//参数1:?位置
//参数2:?值

SQLを実行します:SQLを渡す必要はありません

 注:preparedstatementは、後の段階での追加、削除、および変更に使用されます。

おすすめ

転載: blog.csdn.net/m0_52043808/article/details/123952340