jjzjj

0811JDBC随笔

何以媛起的博客 2023-03-28 原文

1.JDBC体系系统 一组规范:接口

  • JDBC接口(API)包括两个层次:
    • 面向应用的API:Java API,抽象接口,供应用开发人员使用(连接数据库,执行SQL语句,获得结果)
    • 面向数据库的API:Java Driver API,供开发商开发数据库驱动程序

JDBC是sun公司提供一套用于数据库操作的接口,java程序员只需要面向这套接口编程即可。
不同的数据库厂商,需要针对这套接口,提供不同的实现集合,即为不同数据库的驱动

package com.aiguigu.connection;

import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class ConnectionTest {
    @Test
    public void testConnection1() throws SQLException {
        Driver driver = new com.mysql.cj.jdbc.Driver();

        //jdbc:mysql协议
        //local:IP地址
        //3306:默认mysql端口号
        //test:test数据库
        String url = "jdbc:mysql://localhost:3306/MYSQL?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
        //将用户名和密码封装在properties中
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("password","1234");

        Connection conn = driver.connect(url, info);

        System.out.println(conn);
    }

    //方式二:对方式一的迭代 在如下的方式中不出现第三方API,使程序具有更好的可移植性
    @Test
    public void testConnection2() throws Exception {
        //获取Driver实现类对象,使用反射
        Class<?> clazz = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();

        //2.提供要连接的数据库
        String url = "jdbc:mysql://localhost:3306/MYSQL?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";

        //提供要连接的用户名和密码
        Properties info = new Properties();
        info.setProperty("user","root");
        info.setProperty("password","1234");

        //获取连接
        Connection conn = driver.connect(url, info);
        System.out.println(conn);
    }

    @Test
    //方式三:使用DriverManager替换Driver
    public void testConnection3() throws Exception {
        //1.获取Drive实现类的对象
        Class<?> clazz = Class.forName("com.mysql.cj.jdbc.Driver");
        Driver driver = (Driver) clazz.newInstance();
        //2提供另外三个连接的基本信息
        String url = "jdbc:mysql://localhost:3306/MYSQL?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
        String user = "root";
        String password = "1234";

        //注册驱动
        DriverManager.registerDriver(driver);

        //获取连接
        Connection connection = DriverManager.getConnection(url, user, password);

        System.out.println(connection);
    }
    @Test
    //方式三:使用DriverManager替换Driver
    public void testConnection4() throws Exception {
        //1.提供另外三个连接的基本信息
        String url = "jdbc:mysql://localhost:3306/MYSQL?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
        String user = "root";
        String password = "1234";
        //2.获取Drive实现类的对象
        Class.forName("com.mysql.cj.jdbc.Driver");
        //相较于方式三可以省略如下操作:
//        Driver driver = (Driver) clazz.newInstance();
//        //注册驱动
//        DriverManager.registerDriver(driver);


        //3.获取连接
        Connection connection = DriverManager.getConnection(url, user, password);

        System.out.println(connection);
    }
    //方式五:将数据库连接的四个基本信息声明在配置文件中通过读取配置文件,获取连接
    @Test
    public void getConnection5() throws Exception {
        //1.读取配置文件中4个基本信息
        InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");

        Properties pros = new Properties();
        pros.load(is);

        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String url = pros.getProperty("url");
        String driverClass = pros.getProperty("driverClass");

        //加载驱动
        Class.forName(driverClass);

        //获取连接
        Connection conn = DriverManager.getConnection(url, user, password);
        System.out.println(conn);

    }

}

有关0811JDBC随笔的更多相关文章

  1. 【JAVAEE】JAVA数据库连接(JDBC) - 2

    1.什么是JDBC?Java数据库连接,(JavaDatabaseConnectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是SunMicrosystems的商标。我们通常说的JDBC是面向关系型数据库的。简而言之,JDBC就是JDK提供的关于数据库操作的一套接口规范,不同数据库厂商来负责实现这个接口,完成指定的操作。用程序和数据建立连接,分为三步骤:1.连接数据库2.执行SQL语句3.把查询到的结果集转换成JAVA对象2.对于MySQL的JDBC编程的前期准备工作知识拓展:JAR文件(Java归

  2. MySQL的JDBC 编程 - 2

    目录1.数据库编程:JDBC2.JDBC工作原理3.JDBC使用3.1驱动包的下载与导入3.2JDBC使用步骤(插入)4.JDBC修改删除查询1.将数据库驱动包,添加到项目依赖中创建目录,拷贝jar包,然后addaslibrary2.创建数据源DataSourse:数据源,描述了数据库服务器在哪里3.和数据库建立连接使用JDBC里的Connection将代码和数据库服务器进行连接一个程序中,通常有一个数据源对象,可以有多个Connection对象4.构造sql语句PreparedStatement:表示一个预处理过的SQL语句对象5.执行sql语句(1)executeUpdate对应插入到删除

  3. oracle - Golang用的是JDBC还是ODBC或者什么连接类型 - 2

    goversiongo1.8.1windows/amd64我正在导入"github.com/mattn/go-oci8""database/sql"用于连接到我的oracle数据库。在这里,当我在连接字符串中提供数据库用户名、密码、端口和表名时funcopenAndConnectToDb(sbconfigConnectorConfig)*sql.DB{logger:=sbgoclient.Loglogger.Println("Openthedatabase")//oraprop:=LoadConfig("oraproperties.yml")fmt.Println("Loadconfi

  4. xml - 将 JDBC url 从 Maven 传递到 hibernate.cfg.xml - 2

    我有一个hibernate.cfg.xml,其中配置了JDBCUrl:jdbc:mysql://${server.hostname}:3306/dsm?zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=true&autoReconnect=true这些&是必需的(而不仅仅是&)以避免异常:对实体“jdbcCompliantTruncation”的引用必须以“;”结尾分隔符。为了能够通过Maven选择不同的目标数据库,我想将其更改为:${jdbc.url}其中${jdbc.url}是Maven中定义的属性

  5. java - Spring 3 applicationContext-security-JDBC.xml 有 bean :bean not bean? - 2

    有人可以告诉我在我的ApplicationContext中我必须使用beans:bean而不是bean的什么以及如何修复它。 最佳答案 说明。基本上,您在这里处理的是XML命名空间。Spring配置允许您使用来自不同命名空间的配置元素作为一种扩展基本beans命名空间配置的方式,具有方便的特定于域的配置,如上述案例中的安全配置。如果您的配置文件集中在这些扩展命名空间之一——再次,让我们以安全性为例——如果您将默认命名空间声明为扩展命名空间而不是标准beans命名空间。就是这样xmlns="http://www.springframe

  6. java - 从 JDBC 结果集中获取 XML 的最佳方式 - 2

    我正在寻找从JDBC结果集中获取XML文档的最佳方法。XML的结构不是很重要,但它应该相当快。为了清楚起见,我想要结果集中的数据和足够的元数据来识别数据(本质上是字段名称)。我目前正在使用MySQL、DB2、SQLServer,但解决方案需要与数据库无关(对于SQLServer中的XML不是一个可行的选择)。 最佳答案 通过使用WebRowSet,一次可以将整个ResultSet转换成XML。WebRowSet生成的XML非常清晰和简单,我不确定速度,因为它还取决于驱动程序实现。这里有一篇关于WebRowSetusingOracle

  7. java - Log4j2 - 如何将 XML 配置转换为 JDBC appender 的 .properties 格式 - 2

    如何将此log4j2.xml配置片段转换为log4j2.properties格式?我不能在我的maven+netbeans项目中使用XML格式,因为我根本无法让log4j2解析和响应log4j2.xml文件-无论我将它放在项目中的什么位置,它都会被log4j2忽略。但是main/resource中的log4j2.properties被解析并响应,所以我-必须-使用.properties...:我通过官方ApacheMavenlog4j工件使用log4j22.10.0。什么是-correct-log4j2.properties配置才能100%等同于上述配置?我几乎连续两天都在让JDBCa

  8. Java:Oracle XMLType + JDBC - 2

    如何将oracleXMLElement获取到JDBC?java.sql.Statementst=connection.createStatement();//worksoracle.jdbc.OracleResultSetrs=st.execute("SELECTXMLElement("name")FROMdual");rs.getString(1);//returnsnull,why?oracle.sql.OPAQUE=(OPAQUE)rs.getObject(1);//thisworks,butwtfisOPAQUE?基本上,我想读取像这样的字符串或任何XML格式的输出。但是我总是

  9. xml - 最好的 JDBC 数据源 bean 类 - 2

    我看到有些人使用org.apache.commons.dbcp.BasicDataSource而其他配置有com.mchange.v2.c3p0.ComboPooledDataSource。Spring有自己的:org.springframework.jdbc.datasource.DriverManagerDataSource可能还有更多。但哪个最好?我有一个需要连接池的JPA/Hibernate三层应用程序,但看起来它们都支持这个.... 最佳答案 Springhasitsown:org.springframework.jdbc

  10. sql-server - Windows 2003 中 JDBC 连接可用的套接字数 - 2

    我的团队使用带有JTDS驱动程序的纯JDBC(无连接池),用Java构建了一个连接到Windows2003Server中的SQLServer2005的Windows服务。一段时间后,打开数据库连接的方法开始使用以下堆栈跟踪引发异常:java.net.BindException:Addressalreadyinuse:connectatjava.net.PlainSocketImpl.socketConnect(NativeMethod)atjava.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)atjava.net.Pla

随机推荐