jdbc框架{ 元数据: 数据库、表、列的定义信息在框架中才涉及到的知识 DataBaseMetaData对象(数据库){ 获取方法: connection.getMetaData(); 使用: getURL();返回当前连接的数据库的URL信息 getUserName();返回当前连接的数据库的用户名 getDatabaseProd
jdbc框架{
元数据:数据库、表、列的定义信息——在框架中才涉及到的知识
DataBaseMetaData对象(数据库){
获取方法:connection.getMetaData();
使用:
getURL();——返回当前连接的数据库的URL信息
getUserName();——返回当前连接的数据库的用户名
getDatabaseProductName();——数据库的产品名称
getDatabaseProductVersion();——数据库的版本号
getDriverName();——驱动程序的名称
getDriverVersion();——驱动程序的版本号
isReadOnly();——指示数据库是否只允许读的操作
...
例:
Connection conn = JdbcUtils.getConnection(); DatabaseMetaData md = conn.getMetaData(); System.out.println(md.getURL());//输出:jdbc:mysql://localhost:3306/mydb System.out.println(md.getDatabaseProductName());//输出:MySQL System.out.println(md.getDriverVersion());//输出:mysql-connector-java-5.1.22 ( Revision: ${bzr.revision-id} )
}
ParameterMetaData(参数){
获取方法:preparedStatement.getParameterMetaData();——例如一条select * from user where name=? and password=?;这个对象就是这条sql语句参数(问号)的元数据
使用:
getParameterCount();——获得指定参数的个数
getParameterType(int param);——指定参数的sql类型
...
例:
Connection conn = JdbcUtils.getConnection(); String sql = "insert into user(id,name) values(?,?)"; PreparedStatement st = conn.prepareStatement(sql); ParameterMetaData md = st.getParameterMetaData(); System.out.println(md.getParameterCount());//输出:2 // System.out.println(md.getParameterType(1));该方法由于mysql的驱动不支持,会抛异常
}
ResultSetMetaData(结果集){
获取方法:resultSet.getMetaData();——获得代表结果集ResultSet对象的元数据,告诉用户结果集的一些信息
使用:
getColumnCount();——结果集对象的列数
getColumnName(int column);——指定列的名称
getColumnTypeName(int column);——指定列的类型
...
例:
Connection conn = JdbcUtils.getConnection(); String sql = "select * from user"; PreparedStatement st = conn.prepareStatement(sql); ResultSet rs = st.executeQuery(); ResultSetMetaData md = rs.getMetaData(); System.out.println(md.getColumnCount());//输出:一共有多少列 System.out.println(md.getColumnName(1));//输出:第一列的列名 System.out.println(md.getColumnType(1));//输出:第一列的类型
}
编写增删改查的框架(方法){
//增删改的工具方法,只需要将sql语句和sql中的问号对应的参数用数组形式传进方法,就可以执行成功 public static void update(String sql, Object params[]) throws SQLException { // 定义基本对象 Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); st = conn.prepareStatement(sql); // 根据传进来的参数数组填充sql中的问号 for (int i = 0; i < params.length; i++) { st.setObject(i+1, params[i]); } st.executeUpdate(); }finally{ JdbcUtils.release(conn, st, rs); } } // 查的工具方法,还要得到一个用户想要处理结果集的类,用户只需要new一个处理类的对象进来即可 public static Object query(String sql, Object params[], ResultSetHandler handler) throws SQLException{ // 定义基本对象 Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); st = conn.prepareStatement(sql); // 根据传进来的参数数组填充sql中的问号 for (int i = 0; i < params.length; i++) { st.setObject(i+1, params[i]); } // 由于这边得到的结果集有些内容都不知,可以向用户暴露一个处理接口的方法,然后直接在该程序中调用这个处理的方法。 // 用户实现了这个接口并做出了想要的处理,传递到本程序中,就能返回用户想用的数据 rs = st.executeQuery(); return handler.handler(rs); }finally{ JdbcUtils.release(conn, st, rs); } } } // 定义接口 interface ResultSetHandler{ public abstract Object handler(ResultSet rs); } //实现处理单行数据的类,返回封装了结果数据的对象,如果需要处理的是多行的数据,就需要使用集合,把每行数据封装成对象,再存入集合。那么这个方法返回的就是集合对象 class BeanHandler implements ResultSetHandler{ // 通过构造函数获得对象的字节码,以备将结果集存到该对象中 private Class clazz = null; public BeanHandler(Class clazz) { super(); this.clazz = clazz; } @Override public Object handler(ResultSet rs) { try { if(rs.next()){ return null; } // 创建封装结果集的bean对象 Object bean = clazz.newInstance(); // 通过元数据的技术得到结果集的内容 ResultSetMetaData md = rs.getMetaData(); for (int i = 0; i < md.getColumnCount(); i++) { // 获取结果集每列的名称 String columnName = md.getColumnName(i+1); // 得到该列的值 Object value = rs.getObject(columnName); // 为bean对象里的列名对应的属性赋value,使用反射技术;也可以使用beanutils库,这样就必须导入一个库,不方便 //获取bean里的属性,需要设置为私有可见 Field f = bean.getClass().getDeclaredField(columnName); f.setAccessible(true); //进行赋值 f.set(bean, value); } return bean; } catch (Exception e) { throw new RuntimeException(); } }
}
开源框架dbutils{
1.commons-dbutils是Apache组织提供的一个开源jdbc工具类库,他是对jdbc的简单封装,使用dbutils能极大简化jdbc编码的工作量同时也不会影响程序性能
2.使用dbutils需要查看api文档,内部主要是两个类QueryRunner(用于增删改查)和ResultSetHandler(用于处理查询的结果集)
例:
public void add(){ try { // 使用QueryRunner和ResultSetHandler // 创建一个Queryrunner对象,将数据库的数据源作为构造函数传入 QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); // 定义sql语句和参数对象 String sql = "insert into user(id,name) values(?,?)"; Object params[] = {"1", "aaa"}; // 执行更新操作,将sql和参数传入 runner.update(sql, params); } catch (Exception e) { throw new RuntimeException(e); } } public void query(){ try { // 使用QueryRunner和ResultSetHandler // 创建一个Queryrunner对象,将数据库的数据源作为构造函数传入 QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); // 定义sql语句和参数对象 String sql = "select * from user"; // 执行更新操作,将sql传入.并且将结果处理到list容器中 List<User> list = runner.query(sql, new BeanListHandler<User>(User.class)); } catch (Exception e) { throw new RuntimeException(e); } }
结果集处理器(ResultSetHandler实现类){
ArrayHandler:把结果集的第一行数据封装到一个数组内,返回数组对象。——new ArrayHandler();
ArrayListHandler:把结果集的每一行数据都封装到一个数组中,再将每个数组存到list集合内,返回list对象。——new ArrayListHandler();
BeanHandler:将结果集的第一行数据封装到一个bean对象中,需要将bean的字节码对象传入,返回bean对象。——new BeanHandler(User.class);
BeanListHandler:将结果集的每一行数据封装到一个bean对象中,再存放在list集合内,同样需要传入bean的字节码对象,返回list对象。——new BeanListHandler(User.class);
ColumnListHandler:将结果集的某一列的数据存放在list中,需要将列名传入,返回list对象。——new ColumnListHandler("id");
KeyedHandler:将结果集的每一行数据都封装到一个map(key为列名,value为该列的值)中,再将这个map存放在另一个map中(key为传入的指定列名的值,value就是map),返回map对象。——new KeyedHandler("id");
MapHandler:将结果集的第一行数据封装到一个map中,key为列名,value为该列的值,返回map对象。——new MapHandler();
MapListHandler:将结果集的每一行数据都封装到一个map中,再存放在list中,返回list对象。——new MapListHandler();
ScalarHandler:将制定的第一行的某一列(可以传入第几列或者列名)的值存放在一个对象内,返回该对象。——new ScalarHandler(1);
例:
//查询总记录数 QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "select count(*) from user"; //// 1.使用arrayhandler处理器 // Object result[] = runner.query(sql, new ArrayHandler()); //// 取出数据,取出的是Long型的数据,需要进行转型 // int count = ((Long)result[0]).intValue(); // 2.使用scalarhandler处理器,取出第一列的值,指定了封装到Long对象中,进行转型 int count = runner.query(sql, new ScalarHandler<Long>(1)).intValue();}
}
}

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

MySQLデータベースを構築する手順には次のものがあります。1。データベースとテーブルの作成、2。データの挿入、および3。クエリを実行します。まず、createdAtabaseおよびcreateTableステートメントを使用してデータベースとテーブルを作成し、InsertINTOステートメントを使用してデータを挿入し、最後にSelectステートメントを使用してデータを照会します。

MySQLは、使いやすく強力であるため、初心者に適しています。 1.MYSQLはリレーショナルデータベースであり、CRUD操作にSQLを使用します。 2。インストールは簡単で、ルートユーザーのパスワードを構成する必要があります。 3.挿入、更新、削除、および選択してデータ操作を実行します。 4. Orderby、Where and Joinは複雑なクエリに使用できます。 5.デバッグでは、構文をチェックし、説明を使用してクエリを分析する必要があります。 6.最適化の提案には、インデックスの使用、適切なデータ型の選択、優れたプログラミング習慣が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

Dreamweaver Mac版
ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
