[02-02 ]Java数据库链接范列
/* 01 连接池版本的 数据库 连接管理工具,适合于并发场合 */
package cn.tedu.jdbc.day02;
import java.io.InputStream;
import java.sql.Connection;
/*接口 Connection ,Connection 对象的数据库能够提供描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息。此信息是使用 getMetaData 方法获得的。 */
import java.util.Properties;
public class DBUtilsDay02 {
private static String driver;
private static String url;
private static String username;
private static String password;
private static String initSize;
private static String maxActive;
private static BasicDataSource ds;
//静态代码块
static{
ds = new BasicDataSource();
Properties cfg = new Properties();
try{
//db.properties 是src/main/resources 下文件
// 这里的代码书写是模式,就这样谢
InputStream inputStream = DBUtilsDay02.class.getClassLoader().getResourceAsStream("db.properties");
cfg.load(inputStream);
//初始化参数
driver = cfg.getProperty("jdbc.driver");
url = cfg.getProperty("jdbc.url");
username = cfg.getProperty("jdbc.username");
password = cfg.getProperty("jdbc.password");
//initSize = Integer.parseInt(cfg.getProperty("initSize"));
initSize = cfg.getProperty("initSize");
//maxActive = Integer.parseInt(cfg.getProperty("maxActive"));
maxActive = cfg.getProperty("maxActive");
inputStream.close();
//初始化连接池
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
ds.setInitialSize(initSize);
ds.setMaxAxtive(maxActive);
}catch(Exception e){
e.printStackTrace(); //e.printStackTrace( )是打印异常栈信息
throw new RuntimeException(e) //throw new RuntimeException(e)是把异常包在一个运行时异常中抛出。
}
}
public static Connection getConnection(){
try{
//getConnection() 从连接池中获取重用的链接,如果连接池满了,则等待,如果有链接归还,则获取重用的链接;
Connection conn = ds.getConnection();
return conn;
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
public static void close(Connection conn){
if(conn!=null){
try{
//将用过的链接归还到链接池
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
/* 02 演示预编译的SQL执行计划 */
package cn.tedu.jdbc.day02;
import java.sql.Connection;
import java.sql.PreparedStatement;
import javax.print.attribute.standard.PageRanges;
import cd.tedu.jdbc.DbUtils;
public class DemoDay04 {
public static void main(String[] args) {
Connection conn = null;
try {
/*创建连接*/
conn = DBUtilsDay02.getConnection(); /*getConnection方法在连接池中没有连接可以使用时候,会阻塞等待*/
String sql="insert into robin_demo"+"(id,nema) values(?,?)";
/* String sql = "UPDATE biaom "+"SET name= ?"+"WHERE id=?" */
/*将sql发送到数据库,创建执行计划*/
//返回值ps就代表执行计划
PreparedStatement ps = conn.prepareStatement(sql);
//替换执行计划中的参数,2个参数,按照序号发送参数
ps.setInt(1,8);
ps.setString(2,"sjkdo");
//执行“执行计划”
int n = ps.executeUpdate();
System.out.println(n);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
DBUtilsDay02.class(conn);
}
}
}
/* 03 使用执行计划执行更新语句 */
package cn.tedu.jdbc.day02;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class DemoDay05 {
public static void main(String[] args) {
Connection conn = null;
try {
conn =DBUtilsDay02.getConnection();
String sql = "UPDATE biaom "+"SET name= ?"+"WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "laowang");// 这里德 1 指参数的位置,name
ps.setInt(2, 100);
int n = ps.executeUpdate();
System.out.println(n);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
DBUtilsDay02.class();
}
}
}
/* 04 利用ps实现查询功能 */
package cn.tedu.jdbc.day02;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DemoDay06 {
public static void main(String[] args) {
Connection conn = null;
try {
conn = DBUtilsDay02.getConnection();/*getConnection方法在连接池中没有连接可以使用时候,会阻塞等待*/
/*执行sql*/
String sql="select *"+"from cust_info_alon"+"where name like ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "%w%");
/*执行参数*/
ResultSet rs = ps.executeQuery();
while(rs.next()){
//getInt(可以放列的序号),利用序号获取值
int id=rs.getInt(1);
String name=rs.getString(2);
System.out.println(id+","+name);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
DBUtilsDay02.class();
}
}
}
/* 05 sql注入演示
* create table robin_user(
* id number(6), name varchar2(100),pwd varchar2(100)
* );
* insert into robin_user(id,name,pwd) valuse(1,'tom','123');
* */
package cn.tedu.jdbc.day02;
import java.sql.Statement;
import java.util.Scanner;
import java.sql.Connection;
import java.sql.ResultSet;
public class DemoDay07 {
public static void main(String[] args) {
//获取用户输入
Scanner in = new Scanner(System.in);
//输入用户名
System.out.println("用户名");
String name = in.nextLine();
//输入密码
System.out.println("密码");
String pwd = in.nextLine();
//检查登录情况
boolean pass = login(name, pwd);
if(pass){
System.out.println("欢迎你!"+name);
}else{
System.out.println("用户密码出问题了!");
}
}
//检查用户是否能够登录
public static boolean login(String name,String pwd) {
/* \' 代表一个单引号(撇号)字符 */
String sql="select count(*) as c"+"from cust_info_alon"+"where neam=\'"+name+"\'"+"and pwd=\'"+pwd+"\'";
System.out.println(sql);
Connection conn = null;
try {
conn = DBUtilsDay02.getConnection();
Statement st =conn.createStatement();
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
int n = rs.getInt("n");
return n >=1;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
DBUtilsDay02.close(conn);
}
return false;
}
}
[02-02 ]Java数据库链接范列的更多相关文章
- Java JDBC 数据库链接小结随笔
Java JDBC 数据库链接小结随笔 一.链接数据库的步骤 二.关于Statement 和 PrepareStatement 两者区别 用法 三.关于 ResultSet 的一些小结 四.自定义 ...
- [原创] 【2014.12.02更新网盘链接】基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装
[原创] [2014.12.02更新网盘链接]基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装 joinlidong 发表于 2014-11-29 14:25:50 ...
- 【全网最全的博客美化系列教程】02.添加QQ交谈链接
全网最全的博客美化系列教程相关文章目录 [全网最全的博客美化系列教程]01.添加Github项目链接 [全网最全的博客美化系列教程]02.添加QQ交谈链接 [全网最全的博客美化系列教程]03.给博客添 ...
- 关于在Java中链接SQLServer数据库中失败的原因分析
首先声明:笔者是Java的初学者,并且一值是走在自学的道路上,长久以来只有“度娘”相伴.(加入了各种Java学习群,基本没有热心帮人解决问题的.可以理解-_-!!!)大神级的人物就不必看拙文了,没有什 ...
- Java JDBC链接Oracle数据库
package com.test.test; import java.io.FileInputStream;import java.io.FileNotFoundException;import ja ...
- java jdbc 链接mysq 测试l 云服务器 和云数据库 mysql DB
话不多说直接上效果图 下面给出参考代码: package com.humi.db; import java.sql.Connection; import java.sql.DriverManager; ...
- MySQL学习02(操作数据库)
操作数据库 结构化查询语句分类 名称 解释 命令 DDL(数据库定义语言) 定义和管理数据对象,例如数据库和数据表 create.drop.alter DML(数据操作语言) 用于操作数据库对象中所包 ...
- Java数据库操作(MySQL与SQLserver)
在java编程开发中,数据库的开发是重头戏. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品: SQL Server是由Microsoft开发 ...
- EntityFramework 多数据库链接,MySql,SqlServer,Oracel等
环境:EntityFramework5.0,MySql5.6,MSSQL2012 EF是强大的ORM工具,真正意义上的多数据库链接指的是不同类型的数据库,以及同种类型的数据库多个库,EF很好的支持这一 ...
随机推荐
- 第八节,Opencv的基本使用------存取图像、视频功能、简单信息标注工具
1.存取图像 import cv2 img=cv2.imread('test.jpg') cv2.imwrite('test1.jpg',img) 2.图像的仿射变换 图像的仿射变换涉及图像的形状位置 ...
- MongoDB学习笔记(转)
MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...
- PGCD2 - Primes in GCD Table (Hard)
这题肝了三四天,其他啥也没做... 传送门 然后...双倍经验 简单版 不知道为什么会脑抽去帮 LZ_101 大佬验题... 题目和被 A 穿的 PGCD 一样,数据范围变成大概 2e11 ... 于 ...
- Innodb和Myisam数据恢复
(转自)https://www.cnblogs.com/DwyaneTalk/p/4113829.html 背景 这次恢复oracle和sqlserver,想想也不能把mysql落下了吧.三剑合一.都 ...
- 【python】md5加密方法相关使用
md5方法在hashlib库中,使用前需要先导入.它的主要方法为update,copy,以及转换为二进制,十六进制. 用法说明: Help on HASH object: class HASH(bui ...
- spring MVC如何获取session传值到前台
Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务器程 ...
- iOS -- Effective Objective-C 阅读笔记 (5)
1: 理解 '对象等同性' 概念 理解: 根据'等同性' 来比较对象是一个非常有用的功能, 不过按照 == 操作符比较出来的结果未必是我们想要的, 因为该操作比较的是两个指针本身, 而不是其所指的对象 ...
- apache负载调优
Apache负载调优 watch -n 1 -d "pgrep httpd|wc -l" #apache动态查看连接数 ps aux | grep httpd | wc ...
- .NET Core 添加Java 服务引用(WebService) 曲折历程(一)
背景: 需要在HangFire定时任务中加入请求Java开发的WebService接口.定时获取数据同步数据.现有的代码是在VS2017 ,.Net Core 下创建的,添加WS发现系统不支持. 在C ...
- 动态dp
题解: 首先这类题目本身是一个dp/树形dp 然后带上了修改(ddp) 为了权衡查询和修改的时间,我们采用树剖来维护 假设我们能够对每个点维护除了重儿子之外的信息 那么我们的修改只需要修改log个节点 ...