# 一个7,8年的phper学习java之路
之前用python写过图形报表,爬虫,后台搭建觉得python和PHP很像至少很简洁但速度没PHP快。因为精通mysql/前端(HTML/CSS/javascript/jquery/vue)/linux所以只需要把java的东西学好,这对于工作7,8年的老司机来说应该问题不大;
6,7月份开始学习java的基础(比如语法,程序包,泛型等)并总结文档,最近在看JDBC/serlet/JSP,就将就和spring mvc一起搞,因为有8年工作经验就没有看网上的视频但看了两遍文档并记录记忆,直接开搞,一路的摸索尝试解决各种坑和bug,那是相当的累,今天的主题很简单:JDBC来写个增删改查,并简单的封装(OOP思想不能丢,对吧),第一次在这上面写可能写的不好请大家多多包涵和指点!
JDBC的增删改查并封装
软件及工具:
JDK 1.8;
mysql驱动:8.0.11
IDEA编辑器
tomcat :7.0.9
maven:3.6.1
直接上代码吧,封装前的,调试通过了,差不多每行都有注释吧-----------------------------
package com.example.chen.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.sql.*;
public class HandleSql {
static Connection con; //声明 Connection 对象
static PreparedStatement pStmt;//声明预处理 PreparedStatement 对象
static ResultSet res;//声明结果 ResultSet 对象
//IDEA右边Database链接数据库 一定要加 "?serverTimezone=GMT" 否则会报错
static String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT&characterEncoding=utf-8";
static String user = "root";
static String password = "root";
public Connection getConnection() {//建立返回值为 Connection 的方法
try { //代码块(1):加载数据库驱动类
//在IDEA右边Database安装驱动(下载mysql-connector-java-8.0.11.jar 然后在右侧导入进去)
Class.forName("com.mysql.cj.jdbc.Driver"); //没有安装mysql驱动 Class.forName会报错
System.out.println("数据库驱动加载成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//代码块(2):通过访问数据库的URL获取数据库连接对象
try {
con = DriverManager.getConnection(url,user,password);
System.out.println("数据库连接成功");
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
public static void main(String[] args) {//主方法
HandleSql h = new HandleSql();//创建本类对象
con = h.getConnection();//与数据库建立连接
try {
//查询所有记录
String sql = "select * from user";
pStmt = con.prepareStatement(sql);
res = pStmt.executeQuery();
while (res.next()) {//如果当前语句不是最后一条,则进入循环
int id = res.getInt("id");
String name = res.getString("username");
String phone = res.getString("password");
System.out.println("id:" + id + " " + "姓名:" + name + " " + "电话:" + phone);
}
//新增一条数据
pStmt = con.prepareStatement("insert into user (username,password) values (?,?)");
pStmt.setString(1, "陈波波"); //JDBC的url需要带参数&characterEncoding=utf-8 否则中文存进去乱码
pStmt.setString(2, "7654321"); // 数字1是 第一个参数 2代表第二个参数
pStmt.executeUpdate();
//修改更新数据
pStmt = con.prepareStatement("update user set username = ? where id = 4");
pStmt.setString(1,"皮皮虾1");
pStmt.executeUpdate();
System.out.println("更新完毕");
//删除数据
Statement stmt = con.createStatement();//创建Statement对象
stmt.executeUpdate("delete from user where id = 3");
System.out.println("删除完毕");
} catch (Exception e) {
e.printStackTrace();
}
}
}
比如从数据库获取一条记录的 运行结果如下:
数据库数据:
正常情况下我们开发,像这种增删改查等都会封装到方法里的,比如获取一条记录等,代码如下:
package com.example.chen.demo.controller;
import java.sql.*;
//本类是对HandleSql的封装优化(如获取,更新,删除分别封装方法)
package com.example.chen.demo.controller;
import java.sql.*;
//本类是对HandleSql的封装优化(如获取,更新,删除分别封装方法)
public class HandleSqlNew {
static Connection con; //声明 Connection 对象
static PreparedStatement pStmt;//声明预处理 PreparedStatement 对象
static ResultSet res;//声明结果 ResultSet 对象
//IDEA右边Database链接数据库 一定要加 "?serverTimezone=GMT" 否则会报错
static String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT&characterEncoding=utf-8";
static String user = "root";
static String password = "root";
static String DataStr;
public Connection getConnection() {//建立返回值为 Connection 的方法
try { //代码块(1):加载数据库驱动类
//在IDEA右边Database安装驱动(下载mysql-connector-java-8.0.11.jar 然后在右侧导入进去)
Class.forName("com.mysql.cj.jdbc.Driver"); //没有安装mysql驱动 Class.forName会报错
System.out.println("数据库驱动加载成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//代码块(2):通过访问数据库的URL获取数据库连接对象
try {
con = DriverManager.getConnection(url,user,password);
System.out.println("数据库连接成功");
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
//获取数据 封装
public String getAll(){
HandleSqlNew h = new HandleSqlNew();//创建本类对象
con = h.getConnection();//与数据库建立连接
try { //这里要加try catch否则下面con和pStmt会报错
String sql = "select * from user limit 1";
pStmt = con.prepareStatement(sql);
res = pStmt.executeQuery();
while (res.next()) {//如果当前语句不是最后一条,则进入循环
int id = res.getInt("id");
String name = res.getString("username");
String phone = res.getString("password");
return "id:" + id + " " + "姓名:" + name + " " + "电话:" + phone;
}
} catch (Exception e) {
e.printStackTrace();
}
return "error";
}
public static void main(String[] args) {//主方法
HandleSqlNew h = new HandleSqlNew();//创建本类对象
DataStr = (String) h.getAll(); //获取记录的封装方法 强制类型转换String
System.out.println(DataStr);
}
}
//运行结果如上图所示,代码是从网上找的,我也是java菜逼,请大家多多指点,谢谢!
相关推荐
phper之路, 给学PHP初学者明路
3. "爱书吧-2万本图书免费下载.url" - 这是一个链接,指向一个提供2万本免费图书下载的网站,可能是PHP和Web开发相关书籍的资源库,对Phper进行自我学习和提升大有裨益。 综合以上信息,我们可以得出,这是一份专为...
《PHPer杂志第一期》是针对PHP编程语言的专业期刊,旨在深入探讨PHP技术,分享开发经验,推动PHP社区的发展。该杂志的PDF文档包含了多个PHP相关的主题和文章,旨在为PHP开发者提供丰富的学习资源和实践指导。 在这...
标题"phper11.rar"可能代表的是一个关于PHP编程的学习资源包,其中可能包含了第11章或第11部分的内容,或者是针对PHP初学者的第11个练习或者教程集合。描述中的内容反映了学习者的心态,认为学习应有计划,不盲目...
《PHPer》杂志正是这样一个交流的载体,它将PHPer们的实践经验、技术心得、创新思路汇聚在一起,为读者提供了丰富的学习资源。 开源,是《PHPer》杂志的核心理念之一。开源意味着代码可以自由地查看、使用、修改和...
phper新手?还在漫无目的地学习php?那就参考一下技能树吧
史上最难PHPer笔试题_40分就能月薪过万史上最难PHPer笔试题_40分就能月薪过万
在【压缩包子文件的文件名称列表】中,我们只有一个文件"phper1.pdf"。这很可能是一份详尽的PDF文档,包含了关于PHP开发的教程、指南或者是某个课程的讲义。通常,这样的文档会包含以下内容: 1. **PHP简介**:介绍...
康盛的discuz 里有一个authcode由于其优秀的表现立刻受到广大PHPER的青睐,现在它已经跳出PHP领域,几乎成为字符加密的标准(有点夸张哈哈)。 我的资源包中有两个文件 Base64.java Authcode.java 我只是对代码进行...
PHP开发知识结构目录顺序:基础=>进阶=>原理=>架构=>业务=>软技能开发工具编辑器和...Vuejs / React / Angular其他:Golang / Java代码质量编码风格单元测试自动化测试PHP PHP基础自动加载命名空间依赖管理:/PHP扩展
国内的各种网店网城软件系统早已确立了各自面向的群体和...并介绍了商城设计原理、模板的制作、修改和使用、以及商城的优化等等技术,为广大爱好者和使用者深入详细的了解各个网店网城软件系统提供一个更加直观的窗口。
从给定的文件信息来看,这是一份名为《PHPer》的电子杂志的第二期,出版于2007年2月1日,由PHPChina.com主管并主办,旨在为PHP程序员提供一个学习、交流和分享的平台。下面将根据这份文件的信息,详细解析其中涉及的...
PHP,全称“Hypertext Preprocessor”,是一种广泛使用的开源脚本语言,尤其适用于Web开发。作为初学者,了解并掌握PHP是踏入IT行业的坚实基础。这份“PHPer入门资料以及PHP课件”包含了丰富的学习资源,对于想要...
在本期杂志中,我们可以从"PHPer20.pdf"这个文件名推测,它包含了完整的一期内容,包括但不限于技术文章、专家访谈、实战案例和行业趋势等板块。PDF格式确保了内容的易读性和跨平台访问性,让读者无论在哪里都能轻松...
《PHPer》开源杂志是PHPChina倾力打造的一本专门针对PHP开源技术的期刊,每两个月发布一期,致力于为PHP程序员提供最新的技术资讯、实战经验以及行业动态。这份杂志不仅涵盖了PHP的基础知识,还深入探讨了PHP在各种...
phper你的,我的,大家的,学习php必读,学习一下吧,或许对你有用啊……
php手册chm,大家可以参考一下,应该有用的
ActionScript是Flex的核心编程语言,它是基于ECMAScript的一个方言,具备面向对象特性,使得开发者能够创建复杂的动态应用。 在这一期的杂志中,我们可以期待深入探讨以下几点Flex与PHP的结合应用: 1. **Flex与...
一、教程 快速入门 ,快速入门页面。 文档索引页 ,所有文档索引页面,所有文档的集合入口 直接运行演示 cd template php ./duckphp-project run Composer 安装 composer require dvaknheo/duckphp # 用 require ./...