day17

news/2024/10/19 10:14:57

JDBC

JDBC编写六步走:1、注册驱动,告诉java程序我们要链接什么数据库【mysql为案例】5.1.x驱动包中的驱动类路径:【com.mysql.jdbc.Driver】8.x.x驱动包中的驱动类路径:【com.mysql.cj.jdbc.Driver】2、创建与数据库的链接对象3、创建操作数据库对象4、操作数据库对象调用方法执行sql语句,操作数据库5、如果第4步是查询操作的话,需要进一步分析查询结果6、释放资源,关闭与数据库的链接public class JDBCDemo1 {public static void main(String[] args) throws Exception {// 注册驱动,告诉java程序我们要链接什么数据库Class.forName("com.mysql.jdbc.Driver");// 创建与数据库的链接对象// public static Connection getConnection(String url,String user, String password)/*** url: 超链接*  jdbc:mysql://192.168.233.129:3306/bigdata?characterEncoding=UTF-8&useUnicode=True* username: root* password: 123456*/String url = "jdbc:mysql://192.168.233.101:3306/bigdata?characterEncoding=UTF-8&useUnicode=True&useSSL=false";String username = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, username, password);System.out.println("成功获取与mysql数据库的链接对象:" + conn);// 创建操作数据库对象Statement state = conn.createStatement();// 操作数据库对象调用方法执行sql语句,操作数据库// SQL - 结构化查询语言 只要是结构化数据库,基本都可以使用sql语句【mysql是其中一种】// 增删改,其它的操作// 增加
//        int i = state.executeUpdate("insert into students values(1007,'李刚2',18,'男','文科一班')");
//        if(i==1){
//            System.out.println("插入数据成功!");
//        }else {
//            System.out.println("插入数据失败!");
//        }// 删除
//        state.executeUpdate("delete from students where id=1007");// 修改
//        state.executeUpdate("update students set name='江川' where id=1006");// DQL 查询ResultSet resultSet = state.executeQuery("select t1.location as location,count(1) as counts from (select location from jd_comment where productColor='墨玉青') t1 group by t1.location order by counts desc limit 10");//        resultSet.next();
//        String location = resultSet.getString(1);
//        String counts = resultSet.getString(2);
//        System.out.println(location+": "+counts);while (resultSet.next()){//根据列索引获取元素,从左向右从1开始
//            String location = resultSet.getString(1);
//            String counts = resultSet.getString(2);// 根据列名获取String location = resultSet.getString("location");String counts = resultSet.getString("counts");System.out.println(location+": "+counts);}// 释放资源,关闭与数据库的链接state.close();conn.close();}
}

sql注入的问题

在执行SQL语句时是使用拼接字符串的操作 导致可以输入特定的字符串篡改逻辑导致 错误执行 
解决方法:
1.创建操作对象时创建preparedStatement操作对象,定好sql语句的格式,再根据输入的内容对指定位置进行替换String sql = "select name,password from sjusers where name=? and password=?"; // ?相当于占位符preparedStatement = conn.prepareStatement(sql);preparedStatement.setString(1,name);
2.在根本上解决:禁止输入带空格的内容 将nextLine()改为next()preparedStatement.setString(2,pwd);

读取链接getProperty文件

public class MySQLTool {private static Properties prop;private static Connection conn;private MySQLTool(){}public static Connection getConnection(){try {//创建Properties对象prop = new Properties();prop.load(new BufferedReader(new FileReader("java/src/com/shujia/day17/mysql.properties")));String url = prop.getProperty("url");String username = prop.getProperty("username");String password = prop.getProperty("password");// 注册驱动,告诉java程序我们要链接什么数据库Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection(url, username, password);}catch (Exception e){e.printStackTrace();}return conn;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73357.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode 1129. 颜色交替的最短路径

1.题目基本信息 1.1.题目描述 给定一个整数 n,即有向图中的节点数,其中节点标记为 0 到 n – 1。图中的每条边为红色或者蓝色,并且可能存在自环或平行边。 给定两个数组 redEdges 和 blueEdges,其中:redEdges[i] = [a_i, b_i] 表示图中存在一条从节点 a_i 到节点 b_i 的红…

Linux系统命令3

1、df 查看磁盘使用情况Filesystem:代表该文件系统时哪个分区,所以列出的是设备名称。 1K-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变单位大小,也可以用-B来设置。 Used:已经使用的空间大小。Available:剩余的空间大小。 Use%:磁盘使用率。如果使用率在90%以上…

线性表学习1

线性结构 若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且除了首尾节点外所有结点都最多只有一个直接前趋和一个直接后继。 可表示为:(a1,a2,a3,...) 特点:只有一个首结点和尾结点 本质特征:除首尾结点外,其他结点只有一个直接前驱和一个直 接后继。 简言…

学习 gradle 基础

简介 Gradle 的优势一款最新的,功能最强大的构建工具,用它逼格更高 使用 Groovy 或者 Kotlin 代替 XML,使用程序代替传统的 XML 配置,项目构建更灵活 丰富的第三方插件,让你随心所欲使用 完善 Android,Java 开发技术体系下载和安装 官网地址 https://services.gradle.org…

AutoResetEvent双向信号(生产者和消费者)例子

AutoResetEvent是一个非常有用的线程同步机制,尤其是在处理生产者和消费者问题的时候,尤其适用。本随笔记录下生产者和消费者一对一问题的两种写法并进行代码执行逻辑的分析,来加深对AutoResetEvent的理解。 写法一:internal class Program {public static AutoResetEvent …

数据采集和融合技术作业1

作业① 1)用requests和BeautifulSoup库方法定向爬取给定网址的数据,屏幕打印爬取的大学排名信息。 a、主要代码解析 该函数从获取的JSON数据中提取前 num 名大学的信息,并将这些信息存储到 ulist 列表中,同时格式化输出这些大学的排名信息 def printUnivList(ulist, html, …

沃顿商学院商业人工智能笔记-六-

沃顿商学院商业人工智能笔记(六) P46:12_简介.zh_en - GPT中英字幕课程资源 - BV1Ju4y157dK 嗨,我是迈克尔罗伯茨。我是威廉H罗伯茨教授。 我是宾夕法尼亚大学沃顿商学院的金融学劳伦斯教授。 在这一系列视频中,我们将讨论金融、机器学习。以及人工智能。因此,当我想到金…

沃顿商学院商业人工智能笔记-九-

沃顿商学院商业人工智能笔记(九) P82:19_更广泛的隐私和伦理问题.zh_en - GPT中英字幕课程资源 - BV1Ju4y157dK 所以让我们讨论一下关于使用数据科学和人工智能的一些更广泛的问题。一般来说,在工作场所管理人际关系。这些是伦理问题,也是隐私问题。 所以让我们谈谈这些问…