java数据库编程

article/2025/9/20 15:32:08

java数据库编程

刚入门学习java数据库的编程,看了一部分的java核心技术卷2的内容,结合在blibli上看了javaweb的视频,先写一个入门级的数据库文章。
在这里插入图片描述

jdbc是由java定制的一套操作数据库的API(应用程序编程接口)。通过jdbc可以获得与数据库的连接。不过在此之前需要在idea中配置驱动文件。
在这里插入图片描述
加入idea的依赖包中就可以创建连接了。

package com.itheima.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;/*** JDBC快速入门*/
public class jdbcDemo01 {public static void main(String[] args) throws Exception{//1,注册驱动Class.forName("com.mysql.jdbc.Driver");//2,获取连接  如果连接的是本机,可以省略ip和端口号String url="jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";String username="root";String password="1234";Connection conn=DriverManager.getConnection(url,username,password);//3.定义sql语句String sql="update account set money =2000 where id=1";//4,获取执行sql的对象StatementStatement statement = conn.createStatement();//5,执行sqlint i = statement.executeUpdate(sql);System.out.println(i);statement.close();conn.close();}
}

Class.forName(“com.mysql.jdbc.Drive”);用来加载驱动,Driver是由mysql公司写的实现类。
String url=“jdbc:mysql://127.0.0.1:3306/db1?useSSL=false”;
这主要是与数据库相关的配置参数。127.0.0.1是本机的回环地址。3306是mysql的端口号。db1是我自己创建的数据库的名字。如下图。
在这里插入图片描述
紧接其后的是用户名和密码。是由自己设定的。
其他的需要大家自己去看了。要去学习connection类,statement类等。如果调用statement.excuteQuery()会返回resultSet类下的对象。

数据库事务

事务是指把很多操作当做一个整齐,要执行都执行,不存在执行一部分报错退出的情况。
三步操作
conn.setAutoCommit(false);//开启事务
conn.commit();//提交事务
conn.rollback();//回滚事务

package com.itheima.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;/*** JDBC快速入门*/
public class jdbcDemo02 {public static void main(String[] args) throws Exception{//1,注册驱动Class.forName("com.mysql.jdbc.Driver");//2,获取连接  如果连接的是本机,可以省略ip和端口号String url="jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";String username="root";String password="1234";Connection conn=DriverManager.getConnection(url,username,password);//3.定义sql语句String sql1="update account set money =3000 where id=1";String sql2="update account set money =3000 where id=2";//4,获取执行sql的对象StatementStatement statement = conn.createStatement();//开启事务try {conn.setAutoCommit(false);//开启事务//5,执行sqlint i1 = statement.executeUpdate(sql1);System.out.println(i1);int i2 = statement.executeUpdate(sql2);System.out.println(i2);conn.commit();//提交事务} catch (Exception e) {conn.rollback();//回滚事务throw new RuntimeException(e);}statement.close();conn.close();}
}

ResultSet类

当通过statement.excuteQuery()时会返回一个ResultSet的对象。通过foreach可以遍历执行sql语句返回的结果。
值得注意的是ResultSet的next()方法与取值方法。取值与表的结构相关的。
account表
在这里插入图片描述

package com.itheima.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;/*** JDBC快速入门*/
public class jdbcDemo03_DQL {private static ArrayList<account> accounts_list=new ArrayList<>();public static void main(String[] args) throws Exception{//1,注册驱动Class.forName("com.mysql.jdbc.Driver");//2,获取连接  如果连接的是本机,可以省略ip和端口号String url="jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";String username="root";String password="1234";Connection conn=DriverManager.getConnection(url,username,password);//3.定义sql语句String sql1="select * from account";//获取执行sql的对象Statement statement = conn.createStatement();ResultSet rs = statement.executeQuery(sql1);while(rs.next()){int id=rs.getInt("id");String name=rs.getString("name");double money=rs.getDouble("money");accounts_list.add(new account(id,name,money));System.out.println("account"+id+":"+name+"have money"+money);}System.out.println("====================================");for (account acc:accounts_list){System.out.println("account"+acc.getId()+":"+acc.getName()+"have money"+acc.getMoney());}statement.close();conn.close();}
}

结果展示
在这里插入图片描述

PreparedStatement类

提前传入sql语句模板编译,由此可加快执行速度。同时防止注入sql,更加的安全。
不过要设置参数
在这里插入图片描述
tb_user表
在这里插入图片描述

package com.itheima.jdbc;import java.sql.*;
import java.util.ArrayList;
/*** JDBC快速入门*/
public class jdbcDemo03_preparestatement {private static ArrayList<account> accounts_list=new ArrayList<>();public static void main(String[] args) throws Exception{//1,注册驱动Class.forName("com.mysql.jdbc.Driver");//2,获取连接  如果连接的是本机,可以省略ip和端口号  useServerPrepstmts=true开启预编译String url="jdbc:mysql://127.0.0.1:3306/db1?useSSL=false&useServerPrepstmts=true";String username="root";String password="1234";Connection conn=DriverManager.getConnection(url,username,password);String name="zhangsan";String word="1234";//3.定义sql语句String sql1="select * from tb_user where user_name=? and password1=?";//获取执行sql的对象System.out.println(sql1);PreparedStatement preparedStatement = conn.prepareStatement(sql1);preparedStatement.setString(1,name);preparedStatement.setString(2,word);ResultSet resultSet = preparedStatement.executeQuery();if (resultSet.next()){}else{System.out.println("登录成功");System.out.println("登录失败");}preparedStatement.close();conn.close();}
}
package com.itheima.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;/*** JDBC快速入门*/
public class jdbcDemo03_userlogin {private static ArrayList<account> accounts_list=new ArrayList<>();public static void main(String[] args) throws Exception{//1,注册驱动Class.forName("com.mysql.jdbc.Driver");//2,获取连接  如果连接的是本机,可以省略ip和端口号String url="jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";String username="root";String password="1234";Connection conn=DriverManager.getConnection(url,username,password);String name="zhangsan";String word="' or '1'='1";//3.定义sql语句String sql1="select * from tb_user where user_name='"+name+"' and password1='"+word+"'";//获取执行sql的对象System.out.println(sql1);Statement statement = conn.createStatement();ResultSet resultSet = statement.executeQuery(sql1);if (resultSet.next()){System.out.println("登录成功");}else{System.out.println("登录失败");}statement.close();conn.close();}
}

在这里插入图片描述
请看红线标注的sql语句就会改变sql语句结构变成恒成立的句子。使用preparestatement可以避免恶意sql注入。
最近会加更数据库连接池的。


http://chatgpt.dhexx.cn/article/6kk0iqiK.shtml

相关文章

MySQL数据库编程(C++)介绍

本文主要介绍基于 C 编程语言&#xff0c;实现 MySQL 数据库编程的相关知识。 1 概述 本文利用 MySQL 接口实现基于 C 编程语言的 MySQL 数据库编程。 官网中对于 MySQL 的介绍如下&#xff1a; MySQL is a C wrapper for MySQL’s C API. It is built around the same prin…

数据库编程——简单教程

一、实验目的 1、掌握存储过程的概念、优点、特点及用途&#xff1b; 2、掌握创建、执行、修改和删除存储过程的方法。 二、实验内容 &#xff08;一&#xff09;附加上次实验所创建的数据库“db_Library”&#xff0c;并回顾该库的数据表信息。 &#xff08;二&#xff09;练习…

数据库基础编程

连接mysql在黑窗口 mysql -u root -p #登录MySQL SQL语句分类 数据库操作 创建数据库 create database [if not exists] db_name; 1.character set :指定数据库采用的字符集&#xff0c;如果不指定字符集&#xff0c;默认utf8 2&#xff0c;collate&#xff1a;指定数据库…

数据库编程

数据库编程 T-SQL编程基础知识 标识符 标识符分类 常规标识符&#xff08;严格遵守标识符格式规则&#xff09; 界定标识符&#xff08;引号”或方括号[]&#xff09;标识符格式规则 字母或_、、&#xff03;开头的字母数字或_、、$序列 不与保留字相同 长度小于128 不符合规…

数据库编程之ODBC编程

ODBC优点 移植性好 能同时访问不同的数据库 共享多个数据资源 ODBC概述 ODBC产生的原因 由于不同的数据库管理系统的存在&#xff0c;在某个关系数据库管理系统下编写的应用程序就不能在另一个关系数据库管理系统下运行 许多应用程序需要共享多个部门的数据资源&#xff0c…

第8章 数据库编程

文章目录 ❖第一节 T-SQL编程基础标识符注释语句表达式SET、SELECT区别 流程控制语句选择结构❖IF ELSECASE语句搜索式CASE语句 循环结构等待语句返回语句 系统函数标量函数日期和时间函数字符串函数 数据类型转换函数 ❖第二节 游标&#xff08;重点&#xff09;1. 声明游标2.…

teredo实现ipv4公网环境下接入ipv6

teredo实现ipv4公网环境下接入ipv6 系统&#xff1a;macOS High Sierra 10.13.3 测试成功 软件下载 下载安装Miredo http://www.deepdarc.com/miredo-osx-prerelease2.pkg.zip 项目github地址&#xff1a;https://github.com/darconeous/miredo-osx下载安装tuntaposx http…

Tornado简介

Tornado龙卷风是一个开源的网络服务器框架&#xff0c;它是基于社交聚合网站FriendFeed的实时信息服务开发而来的 Tornado是使用Python编写的Web服务器兼Web应用框架与主流Web服务器框架不同的是&#xff0c;Tornado是异步非阻塞式服务器&#xff0c;得益于非阻塞式和对epoll模…

【小白教程】win10系统如何开启ipv6

Teredo 是一种网络协议&#xff0c;用于在客户端和服务器之间建立安全通信&#xff0c;并且在使用网络地址转换 (NAT) 的路由器后增强设备之间的连接。 #####以下代码均在cmd窗口运行###### 一、设置Teredo 服务器 1、设置Teredo 服务器 netsh interface teredo set state …

Teredo Tunnel Adapter: Error Code 10

Teredo Tunneling 该设备无法启动 错误代码 ErrCode:10 解决方法 前文&#xff1a; Win7 系统&#xff0c;打算开启IPV6&#xff0c;本地连接的网络 ip6 驱动是异常的&#xff0c;先重新安装了网卡驱动。 过程&#xff1a; 几次尝试之后&#xff0c;还是无法启动&#xff0c;…

地平线不能多人联机解决方法

玩地平线4时可能会出现无法连接多人网络问题&#xff0c;在Xbox网络中出现Teredo不合格的问题。 解决方案&#xff1a; 按WinR输入gpedit.msc打开组策略编辑器&#xff0c;依次选择管理模块、网络、TCPIP设置、IPv6转换技术。双击设置6to4状态&#xff0c;点已启用&#xff0c…

微软的teredo服务器,win10系统通过teredo连接ipv6的操作方法

win10系统通过teredo连接ipv6的操作方法? 很多win10用户在使用电脑的时候&#xff0c;会发现win10系统通过teredo连接ipv6的的现象&#xff0c;根据小编的调查并不是所有的朋友都知道win10系统通过teredo连接ipv6的的问题怎么解决&#xff0c;不会的朋友也不用担心&#xff0c…

TCP/IP卷一:55---UDP之(UDP与IPv6、Teredo)

前一篇文章&#xff08;https://blog.csdn.net/qq_41453285/article/details/103984794&#xff09;对UDP和UDP数据报、UDP校验和做了简单的介绍&#xff0c;本片文章介绍一些UDP与IPv6有关的知识 一、IPv6下的UDP 考虑到简单性&#xff0c;在对IPv6而非IPv4进行操作时&#…

miredo - Teredo IPv6 tunneling for Unix

世界 IPv6 日&#xff1a;2011年6月8日 Test your IPv6&#xff1a;http://test-ipv6.com 安装miredo sudo apt-get install miredo 编辑miredo配置文件&#xff0c;加入teredo 的公共服务器地址&#xff0c;如ServerAddress teredo-debian.remlab.net sudo gedit /etc…

teredo 未能解析服务器名,Win10系统Xboxlive显示Teredo无法进行限定怎么解决

有的朋友会在windows10电脑上用Xbox live游玩游戏&#xff0c;但是碰到Xbox live设置显示Teredo无法进行限定&#xff0c;这时候我们该怎么办呢&#xff0c;下面由小编给大家介绍如何解决win10系统Xbox live显示Teredo无法进行限定。 具体步骤如下&#xff1a; 1.按下键盘上的&…

报PING:传输失败。常见故障.connect:network is unreachable“的解决方案-IPv6无法ssh连接的解决方案。

vultr当前2.5美金的vps只有IPv6&#xff0c;很多使用者无法正常使用ssh连接等&#xff0c;报PING&#xff1a;传输失败。常见故障。connect&#xff1a;network is unreachable 很多使用者不知所措&#xff0c;笔者也是一脸懵逼&#xff0c;经过一番研究之后&#xff0c;发现了…

微软的teredo服务器,win10系统通过teredo连接ipv6的具体教程

有关win10系统通过teredo连接ipv6的操作方法想必大家有所耳闻。但是能够对win10系统通过teredo连接ipv6进行实际操作的人却不多。其实解决win10系统通过teredo连接ipv6的问题也不是难事&#xff0c;小编这里提示两点&#xff1a;1、在“开始”里输入“cmd”&#xff0c;右击&am…

Win11地平线4 Xbox live无法登录?或者地平线4无法使用在线模式?尝试一波!!!

全是抄袭&#xff0c;只做整理&#xff0c;希望帮到大家&#xff0c;啥也不懂&#xff01;但是&#xff01;我就是这样弄好的 侵权 联系 我 就下架&#xff0c;但是只是想让大家可以解决问题 以下是我参照的文章&#xff1a; XBOX NAT类型:Teredo不合格解决方案 - 知乎 (zhi…

Win7使用teredo连接IPv6的方法

(1) 在 ” 开始 ”->” 运行 ” 中输入 cmd 打开 Windows 命令行。在命令行中输入 ipconfig /all &#xff0c;会出现若干网络配置信息&#xff0c;找到 Tunnel adpter &#xff08;隧道适配器&#xff09; Teredo Tunneling Pseudo-Interface &#xff0c; 查看它是否有正确…

关于Win10用户地平线线上连接xbox live失败问题

问题描述 游玩地平线系列游戏时&#xff0c;无法进入线上游戏游玩更多游戏内容&#xff0c;且无法与朋友联机&#xff0c;问题未知&#xff0c;并且更改加速器节点也没有用。本解决方案针对Win10的小伙伴&#xff0c;Win11的小伙伴可以参考一下。 解决方案 主要是解决xbox网络…