当前位置:网站首页>jdbc_相關代碼
jdbc_相關代碼
2022-06-29 18:13:00 【靈主罪人】
一、statement執行sql語句()
(1)工具類
package Zer.demo.util;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.sql.*;
import java.util.Properties;
public class JdbcUtils {
public static String driver;
public static String url;
public static String root;
public static String password;
static {
try {
//進行讀取資源,配置文件的
InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
//實例化配置文件對象拿取資源
Properties properties = new Properties();
//去加載讀取出來的資源
properties.load(in);
//將資源讀取出來儲存
driver = properties.getProperty("driver");
url = properties.getProperty("url");
root = properties.getProperty("root");
password = properties.getProperty("password");
//1.加載驅動
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
//2.獲取連接
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, root, password);
}
//3.釋放資源
public static void rslease(Connection coon, Statement st, ResultSet resultSet){
if (resultSet!=null){
try {
resultSet.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (st!=null){
try {
st.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (coon!=null){
try {
coon.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
(2)配置文件
名稱:db.Properties,自己在new中新建一個,圖標如下面
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghai
root=root
password=123456
1.删除
package Zer.demo.Caozuo;
import Zer.demo.util.JdbcUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Delete {
public static void main(String[] args) {
Connection coon = null;
Statement st = null;
ResultSet resultSet = null;
try {
//調用了此方法,此時靜態代碼塊會自動執行。加載驅動已經執行了
coon = JdbcUtils.getConnection();
st = coon.createStatement();
String sql ="delete from grade where gradeid=25";
int i = st.executeUpdate(sql);
if (i>0){
System.out.println("删除成功");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
JdbcUtils.rslease(coon,st,resultSet);
}
}
}
2.更新
package Zer.demo.Caozuo;
import Zer.demo.util.JdbcUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Update {
public static void main(String[] args) {
Connection coon = null;
Statement st = null;
ResultSet resultSet = null;
try {
//調用了此方法,此時靜態代碼塊會自動執行。加載驅動已經執行了
coon = JdbcUtils.getConnection();
st = coon.createStatement();
String sql ="update grade set gradename='大家都一樣,即使不一樣,累一點也無妨' where gradeid= 22";
int i = st.executeUpdate(sql);
if (i>0){
System.out.println("更新成功");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
JdbcUtils.rslease(coon,st,resultSet);
}
}
}
3.插入
package Zer.demo.Caozuo;
import Zer.demo.util.JdbcUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Insert {
public static void main(String[] args) {
Connection coon = null;
Statement st = null;
ResultSet resultSet = null;
try {
//調用了此方法,此時靜態代碼塊會自動執行。加載驅動已經執行了
coon = JdbcUtils.getConnection();
st = coon.createStatement();
String sql ="insert into grade values(25,'沒有多餘失落可以走')";
int i = st.executeUpdate(sql);
if (i>0){
System.out.println("插入成功");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
JdbcUtils.rslease(coon,st,resultSet);
}
}
}
4.查詢
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Select {
public static void main(String[] args) {
Connection coon = null;
Statement st = null;
ResultSet resultSet = null;
try {
//調用了此方法,此時靜態代碼塊會自動執行。加載驅動已經執行了
coon = JdbcUtils.getConnection();
st = coon.createStatement();
String sql= "SELECT * FROM grade";
//5、用創建的statement對象執行sql語句,返回結果集
resultSet = st.executeQuery(sql);
while (resultSet.next()){
System.out.println("gradeid="+resultSet.getObject("gradeid"));
System.out.println("gradename="+resultSet.getObject("gradename"));
System.out.println("………………………………………………………………………………………………………………………………………");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
JdbcUtils.rslease(coon,st,resultSet);
}
}
}
如果用statement雖然容易理解上手,但是有SQL注入問題,容易出現安全隱患,為此推薦用preparestatement
5、SQL注入問題
stament存在SQL注入問題
package Zer.demo.util;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class Zhuru {
public static void main(String[] args) {
Login(14," 'or '1=1");
}
//業務語句
public static void Login(int password11,String yonghuming){
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
st= conn.createStatement();
String sql = "select * from grade where gradeid ='"+password11+"' and gradename='"+yonghuming+"'";
rs = st.executeQuery(sql);
while (rs.next()){
System.out.println(rs.getString("gradename"));
System.out.println(rs.getInt("gradeid"));
}
} catch (Exception throwables) {
throwables.printStackTrace();
}finally {
JdbcUtils.rslease(conn,st,rs);
}
}
}
二、Preparedstatement執行sql語句
(1)工具類
package Zer.demo.util;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class JdbcUtils1 {
public static String driver = null;
public static String url = null;
public static String root = null;
public static String password = null;
static {
try {
InputStream in = JdbcUtils1.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties();
properties.load(in);
driver = properties.getProperty("driver");
url = properties.getProperty("url");
root = properties.getProperty("root");
password = properties.getProperty("password");
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getconnection() throws SQLException {
return DriverManager.getConnection(url,root,password);
}
public static void release(Connection conn, PreparedStatement pr, ResultSet rs){
if (rs!=null){
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (pr!=null){
try {
pr.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
(2)配置文件
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghai
root=root
password=123456
1、删除
package Zer.demo.PrepareStatement;
import Zer.demo.util.JdbcUtils1;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Delete1 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils1.getconnection();
String sql = "delete from grade where gradeid = ?";//先寫SQL語句,‘?’是占比特符號
ps = conn.prepareStatement(sql);//進行預編譯,不執行
//手動執行SQL語句
ps.setInt(1, 26);
int i = ps.executeUpdate();
if (i > 0) {
System.out.println("删除成功");
} else {
System.out.println("删除失敗");
}
} catch (Exception throwables) {
throwables.printStackTrace();
} finally {
JdbcUtils1.release(conn, ps, rs);
}
}
}
## 2、更新
package Zer.demo.PrepareStatement;
import Zer.demo.util.JdbcUtils1;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Update1 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils1.getconnection();
String sql = "update grade set gradename = ? where gradeid = ?";//先寫SQL語句,‘?’是占比特符號
ps = conn.prepareStatement(sql);//進行預編譯,不執行
//手動執行SQL語句
ps.setString(1, "女子之道,學會自我愛護");
ps.setInt(2, 26);
int i = ps.executeUpdate();
if (i > 0) {
System.out.println("更新成功");
} else {
System.out.println("更新失敗");
}
} catch (Exception throwables) {
throwables.printStackTrace();
} finally {
JdbcUtils1.release(conn, ps, rs);
}
}
}
3、插入
package Zer.demo.PrepareStatement;
import Zer.demo.util.JdbcUtils1;
import java.sql.*;
public class Insert1 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils1.getconnection();
String sql = "insert into grade(gradeid,gradename) values(?,?)";//先寫SQL語句,‘?’是占比特符號
ps = conn.prepareStatement(sql);//進行預編譯,不執行
//手動執行SQL語句
ps.setInt(1, 26);//第一個占比特符,賦值26
ps.setString(2, "君子之道,自我修養");//第二個占比特符,賦值君子之道,自我修養
int i = ps.executeUpdate();
if (i > 0) {
System.out.println("插入成功");
} else {
System.out.println("插入失敗");
}
} catch (Exception throwables) {
throwables.printStackTrace();
} finally {
JdbcUtils1.release(conn, ps, rs);
}
}
}
4、查詢
package Zer.demo.PrepareStatement;
import Zer.demo.util.JdbcUtils1;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Select1 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtils1.getconnection();
String sql = "select * from grade";
String sql1 = "select * from grade";
ps = conn.prepareStatement(sql);//進行預編譯,不執行
//手動執行SQL語句,沒有占比特符就可以不用寫
rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt("gradeid"));
System.out.println(rs.getString("gradename"));
}
} catch (Exception throwables) {
throwables.printStackTrace();
} finally {
JdbcUtils1.release(conn, ps, rs);
}
}
}
边栏推荐
- 小迈科技 X Hologres:高可用的百亿级广告实时数仓建设
- 自动化软件测试 - 利用短信转发器结合Selenium读取短信验证码
- Detailed analysis on the use of MySQL stored procedure loop
- [tcapulusdb knowledge base] tcapulusdb system user group introduction
- 3h精通OpenCV(七)-颜色检测
- Visio标注、批注位置
- Record that the server has been invaded by viruses: the SSH password has been changed, the login fails, the malicious program runs full of CPU, the jar package fails to start automatically, and you ha
- POJ 1975 (传递闭包)
- The soft youth under the blessing of devcloud makes education "smart" in the cloud
- 布隆过滤器:
猜你喜欢

Kubekey2.2.1 kubernetes1.23.7 offline package production +harbor Department summer and upload image

codeforces每日5题(均1700)-第二天

Servlet student management system (Mengxin hands-on version)

最受欢迎的30款开源软件

How to use the chart control of the b/s development tool devextreme - customize the axis position?

Adobe Premiere基础-批量素材导入序列-变速和倒放(回忆)-连续动作镜头切换-字幕要求(十三)

ISO 32000-2 国际标准7.7

MATLAB 最远点采样(FPS)

Niuke Xiaobai monthly race 52 E group logarithmic sum (inclusion exclusion theorem + dichotomy)

布隆过滤器:
随机推荐
给定一个数在序列中求最大异或值(01字典)
牛客小Bai月赛52 D 环上食虫(尺取+st表)
VB.Net读写NFC Ntag标签源码
Goldfish rhca memoirs: do447 build advanced job workflow -- create job template survey to set work variables
Xiaomai technology x hologres: high availability of real-time data warehouse construction of ten billion level advertising
Wechat applet development reserve knowledge
C comparison of the performance of dapper efcore sqlsugar FreeSQL hisql sqlserver, an ORM framework at home and abroad
金鱼哥RHCA回忆录:DO447构建高级作业工作流--使用事实缓存提高性能
[网鼎杯 2020 青龙组]AreUSerialz
上班可以做副业
3H proficient in opencv (VI) - image stacking
Adobe Premiere基础-批量素材导入序列-变速和倒放(回忆)-连续动作镜头切换-字幕要求(十三)
Adobe Premiere Basics - common video effects (corner positioning, mosaic, blur, sharpen, handwriting tools, effect control hierarchy) (16)
Adobe Premiere基础-声音调整(音量矫正,降噪,电话音,音高换挡器,参数均衡器)(十八)
js两个二维数组合并并去除相同项(整理)
【TcaplusDB知识库】TcaplusDB单据受理-事务执行介绍
Matlab farthest point sampling (FPS)
MaxCompute字符串替换函数-replace
POJ 1975 (传递闭包)
Kubekey2.2.1 kubernetes1.23.7 offline package production +harbor Department summer and upload image
