JDBC---JAVA Database Connection java数据库连接

思考:java属于什么语言?---OOP面向对象的语言。数据库属于什么语言? --SQL语言: 结构化查询语言。上面会因为语言不同,带来沟通问题?如果是你如何解决java和数据库之间的沟通?--找个翻译官。1.java连接mysql数据库 (1)创建一个java工程(2)在工程下创建一个目录lib---》放jar的(3)把该jar进行解压---》一定要在程序中完成(4)写程序```javapackage com.ykq.demo;.....
摘要由CSDN通过智能技术生成

思考:

java属于什么语言?---OOP面向对象的语言。

数据库属于什么语言? --SQL语言: 结构化查询语言。

上面会因为语言不同,带来沟通问题?

如果是你如何解决java和数据库之间的沟通?--找个翻译官。

目录

1. java连接mysql数据库

  (1)创建一个java工程

(2)在工程下创建一个目录lib---》放jar的

(3)把该jar进行解压---》一定要在程序中完成

 (4)写程序

2.查询数据库表中记录

(1)分析查询

(2)根据条件查询

3. sql注入安全问题

如何解决sql安全注入问题:1. 前端做校验: --只防君子 防不了小人。2. 后端也做校验:--难道以后每次写功能都进行校验吗? 代码变得复杂了。3. 执行sql的类Statement出现了问题,后期PrepareStatement该类来解决sql注入安全问题。

Statement和PrepareStatement区别?Statement会出现sql注入安全问题。Preparestatement不会出现sql注入安全问题。Preparestatement是Statement的子类。就是因为早期使用Statement发现该类出现问题,后期维护人员创建Statement的子类来解决这个问题。注意:维护人员不会再原类上做维护

4.把查询的结果封装到相应的实体上

 如何把查询的结果封装起来。1. 把数据库中每张表封装成一个类---简称实体类。2. 把表中的列封装成实体类中的属性。3. 表中的每条记录封装成实体类的对象。4. 表中多条记录封装成集合ArrayList

5.把对每一张表的操作封装到相应的类上


1. java连接mysql数据库

  (1)创建一个java工程

(2)在工程下创建一个目录lib---》放jar的

(3)把该jar进行解压---》一定要在程序中完成

 (4)写程序

```java
package com.ykq.demo;

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

public class Test01 {
    public static void main(String[] args)throws Exception {
        //1.加载驱动---理解为引用翻译
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2.获取连接对象
        //       String url, 数据库的路径  mysql5.7以后
        //       协议:数据的种类://ip:端口号/数据库名?serverTimezone=Asia/Shanghai
        //       jdbc:mysql://
        //        String user,账号
        //        String password 密码
        String url="jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root";
        Connection connection= DriverManager.getConnection(url,user,password);

        //3.获取执行sql语句的对象。
        Statement statement=connection.createStatement();

        //4.执行sql语句。增删改
        String sql="delete from t_student where id=1";
        statement.executeUpdate(sql);
    }
}
```java
public class TestJdbc {

    //测试添加功能---往数据库中添加
    @Test
    public void testInsert() throws Exception{
        Class.forName("com.mysql.cj.jdbc.Driver");

        String url="jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root"; //这里的密码要和你自己的对照
        Connection connection = DriverManager.getConnection(url,user,password);

        Statement statement = connection.createStatement();

        String sql="insert into t_student values(null,'玉慧梦',16,'北京')";
        statement.executeUpdate(sql);

    }

    @Test
    public void testUpdate() throws Exception{
        Class.forName("com.mysql.cj.jdbc.Driver");

        String url="jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai";
        String user="root";
        String password="root"; //这里的密码要和你自己的对照
        Connection connection = DriverManager.getConnection(url,user,password);

        Statement statement = connection.createStatement();

        String sql="update t_student set name='闫克起',age=18,address='香港' where id=2";
        statement.executeUpdate(sql);

    }
}

2.查询数据库表中记录

@Test  //理解为main函数。可以独立运行。
  public void testQuery() throws Exception { //抛出异
常只是为了操作方便。真正在开发时应该try--catch
    Class.forName("com.mysql.cj.jdbc.Driver");
    Connection conn = DriverManager.getConnection
       ("jdbc:mysql://localhost:3306/mydb?
serverTimezone=Asia/Shanghai", "root", "root");
    Statement statement = conn.createStatement();
 String sql = "select id,name,age,address from
t_student";
    //执行查询sql语句 并把数据库表中记录返回到ResultSet对
象中进行保存。
    ResultSet rs = statement.executeQuery(sql);
    //取出ResultSet中表的记录。rs.next() 判断指针是否可
以移动。如果可以移动则返回true,否则返回false
    while (rs.next()) {
      int id = rs.getInt("id"); //指针移动并获取指
定列的值。
      String name = rs.getString("name");
      String address=rs.getString("a
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值