JDBC:使用JAVA语言操作关系型数据库的API。是一套标准的接口。

步骤

1.创建工程,导入驱动jar包

2.注册驱动:Class.forName("com.mysql.jdbc.Driver");

3.获取连接:Connection conn=DriverManager.getConnection(url,username,password);

4.定义SQL:String SQL=" ";

5.获取执行SQL对象:Statement  stmt=conn.createStatement();

6.执行SQL:stmt.executeUpdate(sql);

7.处理返回结果

8.释放资源

怎么下载驱动jar包?

JDBC连接数据库报错

错误:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

翻译:加载类 'com.mysql.jdbc.Driver'.这已弃用。新的驱动程序类是“com.mysql.cj.jdbc.Driver”。驱动程序通过 SPI 自动注册,通常不需要手动加载驱动程序类。
原因:驱动名错误

解决方法:将'com.mysql.jdbc.Driver'替换为:com.mysql.cj.jdbc.Driver

代码:

package com.demo.jdbdDemo;

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

public class jdbcDemo {
public static void main(String[] args) throws Exception {
//注册驱动
//驱动版本为8.x:"com.mysql.cj.jdbc.Driver"
//驱动版本为5.x:"com.mysql.jdbc.Driver"
Class.forName("com.mysql.jc.jdbc.Driver");
//获取连接
      //url:需要连接的数据库url
      //username:用户名
      //password:密码
Connection conn= DriverManager.getConnection(url,username,password);
//定义SQL
String sql="select * from student s where s.stuname='张三'";
//获取执行SQL对象
Statement stmt=conn.createStatement();
//判断是否查询成功
      if(stmt.execute(sql)){
      System.out.println("查询成功");
      }else {
       System.out.println("没查询到数据");
      }
     //释放资源
    stmt.close();
    conn.close();

}
}

DriverManager

  1. 驱动管理类(工具类)
  2. 注册驱动
  3. 获取数据库连接
  4. 语法:jdbc:mysql://ip或者域名:端口号/数据库名称?参数键值对1&参数键值对2...
  5. 如果连接的是本机mysql服务器,并且端口为:3306,url可以简写为:jdbc:mysql:///数据库名称?键值对
  6. 配置useSSL=false参数,禁用安全连接方式,可以解决警告提示。jdbc:mysql://ip:3306/数据库名称?useSSL=false

Connection

数据库连接对象

1.获取执行SQL的对象

  • 普通执行SQL对象:Statement  createStatement();
  • 预编译SQL的执行SQL对象,防止SQL注入:PreparedStatement  prepareStatement(sql);
  • 执行存储过程对象:CallableStatement  prepareCall(sql)

2.管理事务

  • a.mySQL事务管理
  1. 开启事务:begin,start transaction
  2. 提交事务:commit
  3. 回滚事务:rollback

b.JDBC事务管理

  1. 开启事务:setAutoCommit(boolean autoCommit);true-自动提交事务,false-手动提交事务,即开启事务
  2. 提交事务:commit();
  3. 回滚事务:rollback();

代码:

public class jdbc_Connection_Demo {
//Connection对象管理事务
public static void main(String[] args) throws Exception {
Connection conn= DriverManager.getConnection("jdbc:mysql://ip:3306/zl_db","用户名","密码");
//获取执行SQL对象
Statement stat= conn.createStatement();
try {
conn.setAutoCommit(false);//开启事务
String SQL="insert into student(id,stuname,stusex) values(4,'李四','男')";
stat.executeUpdate(SQL);
//int a=2/0;
conn.commit();
}catch (Exception e)
{
conn.rollback();//回滚事务
System.out.println("回滚事务");
e.printStackTrace();
}

}
}

Statement

  • 用于执行SQL语句
  • int executeUpdate(sql);//执行DML、DDL语句,insert、update、delete
  • 返回值:DML返回受影响的行数,DDL语句执行后执行成功也可能返回0
  • ResultSet executeQuery(sql);执行DQL语句
  • 返回值:ResultSet结果集对象

ResultSet

1.封装DQL查询语句的结果

2.获取查询结果

  • boolean next();//将光标从当前位置向前移动一行。判断当前行是否为有效行
  • 返回值:true-有效行,当前行又数据。false-无效行,当前行没有数据
  • xxx  getXxx(参数):获取数据
  • xxx:数据类型。如:int getInt(参数)...
  • 参数:int:列的编号,从开始。String:列的名称

代码:

public class jdbc_Result_to_ArrayList {
//将Result对象封装成ArrayList对象
public static void main(String[] args) throws Exception {
Connection conn= DriverManager.getConnection("jdbc:mysql://ip3306/zl_db","用户名","密码");
//获取执行SQL对象
Statement stat= conn.createStatement();
String SQL="select * from student";
ResultSet resultSet=stat.executeQuery(SQL);
List<Student> list=new ArrayList<>();
//处理返回的结果,将结果值封装成ArrayList
while (resultSet.next()){//判断当前行是否为有效行
//创建集合对象
Student student=new Student();
student.setId(resultSet.getInt("id"));//id:数据库列名
student.setStuname(resultSet.getString("stuname"));
student.setStusex(resultSet.getString("stusex"));
list.add(student);
// 输出查询到的结果
// System.out.println(resultSet.getInt("id")+","
// +resultSet.getString("stuname")+","
// +resultSet.getString("stusex"));
// System.out.println("-------------");
}

//输出结果
System.out.println("编号\t姓名\t性别");
for (Student s:list
) {
System.out.println(s.getId()+","+s.getStuname()+","+s.getStusex());
}
}
}

PreparedStatement

  • 继承Statement
  • 预编译SQL语句并执行(性能高):预防SQL注入问题(会将敏感字符进行转义)
  • SQL注入:通过操作输入来修改实现定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法

1.获取PreparedStatement对象

  • //SQL中的参数值使用问号:?占位符代替

    String sql = "SELECT * FROM STUDENT S WHERE S.USERNAME=? and S.USERPASSWOR=?";
  • //通过Connection对象获取,并传入对应的SQL语句:

    PreparedStatement pstat=conn.prepareStatement(sql);

2.设置参数值

  • PrepareStatement对象:setxxx(参数1,参数2):给?赋值
  • xxx:数据类型;如setInt(参数1,参数2)
  • 参数1:?的位置编号,从1开始
  • 参数2:?的值
    //设置?的参数
    pstat.setString(1,username);
    pstat.setString(2,userpassword);

3.执行SQL

  • executeUpdate();/executeQuery();//不需要传递sql

4.原理

1.在获取PrepareStatement对象时,将sql语句发送给mysql服务器进行检查,编译(耗时)

2.执行时就不用再进行这些步骤,速度更快

3.如果sql模板一样,则只需要进行一次检查编译

PrepareStatement预编译功能开启:userServicePrepStmes=true(添加至连接url的参数列表)。预编译功能默认是关闭的

配置mysql执行日志(重启mysql服务后生效)。如何添加?mysql配置文件在哪

内容如下:

log-output=FILE

general-log=1

general_log_file=""//日志文件

slow_query-log=1

slow_query_log_file=""

long_query_time=2

数据库连接池

Druid的使用,步骤
1.导入jar包

2.定义配置文件

内容:

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://ip:3306/zl_db?useSSL=false&userServerPrepStmts=true
username=用户名
password=密码
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000

3.加载配置文件

4.获取连接对象

5.连接对象

代码:

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

// System.out.println(System.getProperty("user.dir"));//查看文件所在的目录
//
try{
 //获取连接对象
            Properties prop=new Properties();
//加载配置文件
prop.load(new FileInputStream("src/Druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
//获取数据库连接Connection
Connection conn=dataSource.getConnection();
System.out.println("hhhh"+conn);
}catch (Exception e){
e.printStackTrace();
}

}

【报错信息】

com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited

JDBC——连接SQL Server环境配置的更多相关文章

  1. JDBC连接SQL Server 2005步骤详解

    一.设置SQL Server服务器:    1.“开始” → “程序” → “Microsoft SQL Server 2005” → “配置工具” → “SQL Server Configurati ...

  2. 使用JDBC连接SQL Server

    源文:http://bbs.bc-cn.net/dispbbs.asp?boardid=12&id=140292 整理:秋忆 接触Java或者JSP,难免会使用到数据库SQL Server 2 ...

  3. Java使用JDBC连接SQL Server数据库|实现学生成绩信息系统

    Java实验四 JDBC 使用SQL Server数据库或者MySQL数据库各自的客户端工具,完成如下任务: (1)创建数据库students: (2)在数据students中创建表scores,包括 ...

  4. Java使用JDBC连接SQL Server数据库

    Java使用JDBC连接SQL Server数据库 1.下载驱动 1.下载Microsoft SQL Server JDBC 驱动程序 https://docs.microsoft.com/zh-cn ...

  5. JDBC连接SQL Server代码模板

    *                  JDBC连接SQL Server数据库 代码模板* Connection: 连接数据库并担任传送数据的任务:* Statement :  执行SQL语句:* Re ...

  6. JDBC连接sql server数据库及其它

    JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...

  7. JDBC连接SQL server与ADO.NET连接Sql Server对比

    JDBC连接SQL server与ADO.NET连接Sql Server对比 1.JDBC连接SQL server 1)java方面目前有很多驱动能够驱动连接SQL servernet.   主流的有 ...

  8. JDBC连接sql server数据库的详细步骤和代码

    JDBC连接sql server数据库的详细步骤和代码 JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Ja ...

  9. 使用IP连接SQL SERVER或者配置为连接字符串失败

    使用IP连接SQL SERVER或者配置为连接字符串失败 情景一:当在webconfig文件中使用   <add key="ConnectionString" value=& ...

  10. JDBC连接sql server数据库的详细步骤和代码 转

    JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序(只做一次): 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.C ...

随机推荐

  1. 解决Google翻译不能用的问题

    解决Google翻译不能用的问题   1.打开C:\Windows\System32\drivers\etc\hosts 2.在hosts后面加入 203.208.40.66 translate.go ...

  2. selenium执行下载多个文件操作,谷歌浏览器弹出"xxx想要下载多个文件"的处理方法

    背景:   使用selenium框架,批量下载多个目录的不同文件,而下载多个文件时,浏览器会弹出如下窗口 解决方案有2个:1.代码定位到元素并点击[允许].2.修改浏览器的设置,使其能够拥有自动下载的 ...

  3. 浪潮QQ群成员提取器 V2022

    浪潮QQ群成员提取软件 V2021 最新升级版 使用扫描安全登录QQ,批量获取群列表,然后在读取指定群的群成员列表支持过滤群主.群管理员 支持按最后发言时间提取活跃用户 支持识别僵尸粉和过滤可以导出文 ...

  4. 数据库管理工具navicat16.0安装

    //-----------------*****本文章只做学习参考,侵权立删*****-----------------\\ 总结概要如下: 1.完成安装包下载后,点击navicat160_premi ...

  5. 使用 EMQX Cloud 桥接数据到 GCP Pub/Sub

    前不久,Google 宣布其旗下的 GCP IoT Core 即将在 2023 年 8 月 16 日停止提供服务.这意味着大量使用 GCP IoT Core 的用户可能需要将他们的 IoT 应用迁移到 ...

  6. Jmeter 命令执行脚本并输出报告

    Jmeter 可以通过cmd 命令执行脚本,并输出报告 执行顺序如下: 第一 进入 安装的jmeter bin 目录下:(我安装的是E盘)

  7. linux中的环境变量/etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc

    来源:https://blog.csdn.net/zzhongcy/article/details/108663751 /etc/profile ============ 此文件为系统的每个用户设置环 ...

  8. ToLua中判断引用的C#对象是否为nil

    C#层对象已经删除了,但是lua层判断不为nil.然后lua调用了,又会报nil的错误. 这里提供了一种判断方式. lua里的判断.这个Util.IsNull()是C#层代码. function He ...

  9. Python用telnet设置,抓UDP抓采样点并显示

    ====main.bat==== echo off rem "d:\Program\WiresharkPortable64\App\Wireshark\tshark.exe" -- ...

  10. 从create-react-app 学点东西1:web-vitals

    导言 市场中流行的框架有很多地方是值得我们深入的去探究或学习的,<从create-react-app学点东西>这系列文章从create-react-app创建的项目中找出一些重要或者容易忽 ...