1、Statement接口实现增删改查

(1)增加数据表中的元组:

package pers.datebase.zsgc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; public class JDBC {
public static void main(String[] args) throws ClassNotFoundException,
SQLException {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 链接到数据库
String url = "jdbc:mysql://localhost:3306/student mangement system";
String username = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, username, password); // 获取到SQL语句的执行者对象
Statement stat = con.createStatement(); // 增加
stat.executeUpdate("insert into student(studentno,sname,sex,birthday,classno,point,phone,email)"
+ "values('201712219','张涵','女','1989-12-18','080601','666','15878945612','han@163.com')"); // 释放资源
stat.close();
con.close();
}
}

(2)删除元组:

package pers.datebase.zsgc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; public class JDBC {
public static void main(String[] args) throws ClassNotFoundException,
SQLException {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 链接到数据库
String url = "jdbc:mysql://localhost:3306/student mangement system";
String username = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, username, password); // 获取到SQL语句的执行者对象
Statement stat = con.createStatement(); // 删除
String sql = "delete from student where sname='张涵'"; // SQL语句
stat.executeUpdate(sql); // 将sql语句上传至数据库执行 // 释放资源
stat.close();
con.close();
}
}

(3)修改元组:

package pers.datebase.zsgc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; public class JDBC {
public static void main(String[] args) throws ClassNotFoundException,
SQLException {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 链接到数据库
String url = "jdbc:mysql://localhost:3306/student mangement system";
String username = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, username, password); // 获取到SQL语句的执行者对象
Statement stat = con.createStatement(); String sql="update student set classno='201718' where sname='平靖' "; //SQL语句
stat.executeUpdate(sql); //将sql语句上传至数据库执行 // 释放资源
stat.close();
con.close();
}
}

(4)查询数据表:

package pers.datebase.zsgc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBC {
public static void main(String[] args) throws ClassNotFoundException,
SQLException {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 链接到数据库
String url = "jdbc:mysql://localhost:3306/student mangement system";
String username = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, username, password); // 获取到SQL语句的执行者对象
Statement stat = con.createStatement(); String sql="select * from score"; //sql语句
ResultSet rs=stat.executeQuery(sql); //ResultSet 是java中执行select后,返回的结果集类。 rs 就是结果集的变量。
while(rs.next()){ //next()获取里面的内容
System.out.println(rs.getString()+" "+rs.getString()+" "+rs.getString()+""+rs.getString());
} // 释放资源
stat.close();
con.close();
rs.close();
}
}

2、PreparedStatement接口

(1)添加:

package pers.Pre.add;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement; public class Add {
public static void main(String[] args) {
Connection con = null;
PreparedStatement ps = null; try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/student mangement system";
String username = "root";
String password = "root";
con = DriverManager.getConnection(url, username, password);
String insertSql = "insert into score(studentno,courseno,usually,final)values(?,?,?,?)";
ps = con.prepareStatement(insertSql);// 获取预处理对象
ps.setString(1, "20191832");
ps.setString(2, "b221");
ps.setDouble(3, 123);
ps.setDouble(4, 123);
int num = ps.executeUpdate();
System.out.println("添加了" + num + "条记录");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ps != null)
ps.close();
if (con != null)
con.close();
} catch (Exception e) {
e.printStackTrace();
}
} }
}

(2)删除:

package pers.Pre.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement; public class DeleteDemo {
public static void main(String[] args) {
Connection con = null;
PreparedStatement ps = null; try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/student mangement system";
String username = "root";
String password = "root";
con = DriverManager.getConnection(url, username, password);
String deleteSql = "Delete from Student where sname=?";
ps = con.prepareStatement(deleteSql);// 获取预处理对象
ps.setString(1,"秀儿");
int num = ps.executeUpdate();
System.out.println("删除了" + num + "条信息");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ps != null)
ps.close();
if (con != null)
con.close();
} catch (Exception e) {
e.printStackTrace();
} } } }

(3)修改:

package pers.Pre.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement; public class UpdateDemo {
public static void main(String[] args) {
Connection con = null;
PreparedStatement ps = null; try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/student mangement system";
String username = "root";
String password = "root";
con = DriverManager.getConnection(url, username, password);
String updateSql = "Update Login set password=? where account ='学前班秀儿'";
ps = con.prepareStatement(updateSql);// 获取预处理对象
ps.setString(1,"201908");
int num = ps.executeUpdate();
System.out.println("更改了" + num + "条信息");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ps != null)
ps.close();
if (con != null)
con.close();
} catch (Exception e) {
e.printStackTrace();
} } } }

(4)查询:

package pers.Pre.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class SelectDemo {
public static void main(String[] args) {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null; try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/student mangement system";
String username = "root";
String password = "root";
con = DriverManager.getConnection(url, username, password);
String selectSql = "select * from score";
ps = con.prepareStatement(selectSql);// 获取预处理对象
rs = ps.executeQuery();
System.out.println(" "+"学号"+" "+"班级"+" "+"平时成绩"+" "+"期末成绩");
while (rs.next()) { System.out.println( rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+
rs.getString(4));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ps != null)
ps.close();
if (con != null)
con.close();
if (rs!=null)
rs.close();
} catch (Exception e) {
e.printStackTrace();
} } } }

(5)Statement接口与PreparedStatement接口的对比:

Statement接口用于处理不带参数的静态sql语句,PreparedStatement接口可以处理带参数的sql语句。

(6)防注入攻击

可以注入攻击的登录:

package pers.jdbc.log;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.*; public class Log { public static void main(String[] args) throws Exception {
// 输入用户名和密码
Scanner sc = new Scanner(System.in);
System.out.println("请输入账号");
String zh = sc.nextLine();
System.out.println("请输入密码");
String mm = sc.nextLine(); // 到数据库验证用户名和密码是否正确
Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/student mangement system";
String username = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, username, password); Statement state = con.createStatement(); String sql = "select * from Login where account='" + zh
+ "' and password='" + mm + "'";
ResultSet re = state.executeQuery(sql);
// 输出:正确显示欢迎,不正确显示错误
if (re.next()) {
System.out.println("登陆成功!");
} else {
System.out.println("输入账号或密码错误");
}
state.close();
con.close();
re.close(); } }

可以看出,在登陆的数据表中,并没有与之相对应的用户名和密码,但是也能登录成功。 其实在java代码中,运行的查询语句是这样的:select * from Login where account='zhai'and password='1' or 1=1,运行结果为true。

注意:对是否登录成功的判断不能以是否为空作为标准,要以next()方法作为标准去判断

注入攻击的防止:

package pers.jdbc.log;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner; public class Log1 {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/student mangement system";
String username = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, username, password);
Scanner sc = new Scanner(System.in);
System.out.println("请输入账号");
String account = sc.nextLine();
System.out.println("请输入密码");
String password1 = sc.nextLine();
// 执行SQL语句,数据表,查询用户名和密码,如果存在,登录成功,不存在登录失败
String sql = "SELECT * FROM login WHERE account=? AND password=?";
// 调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
// 方法中参数,SQL语句中的参数全部采用问号占位符
PreparedStatement pst = con.prepareStatement(sql); // 调用p s t对象set方法,设置问号占位符上的参数
pst.setObject(1, account);
pst.setObject(2, password1); // 调用方法,执行SQL,获取结果集
ResultSet rs = pst.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("account") + "欢迎你");
}
rs.close();
pst.close();
con.close();
sc.close();
}
}

在java代码中,如果还进行注入攻击,运行的查询语句是这样的:select * from Login where account='zhai'and password=1' or ‘1=1,将运行错误。

3、DBUtils实现增删改查(QueryRunner类)

利用QueryRunner类实现对数据库的增删改查操作,需要先导入jar包:commons-dbutils-1.6。利用QueryRunner类可以实现对数据步骤的简化。

(1)添加:

运用JDBC工具类实现连接:

package JDBCUtils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; public class JDBCUtils {
private static Connection con;
private static String driver;
private static String url;
private static String username;
private static String password; static {// 静态代码块只执行一次,获取一次信息即可
try {
readConfig();
Class.forName(driver);
con = DriverManager.getConnection(url, username, password);
} catch (Exception ex) {
throw new RuntimeException("数据库连接失败");
}
}
/*
* getClassLoader();返回该类的加载器
* getResourceAsStream();查找具有给定名称的资源
*/
private static void readConfig() {
InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("JDBC.properties");
Properties pro = new Properties();
try {
pro.load(in);
} catch (IOException e) {
e.printStackTrace();
}
driver = pro.getProperty("driver");
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
} public static Connection getConnection() {
return con;
}
public static void close(Connection con) { if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("con流关闭异常!");
}
} }
public static void close(Connection con, Statement stat) { if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("stat流关闭异常!");
}
} if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("con流关闭异常!");
}
} } public static void close(Connection con, Statement stat, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("rs流关闭异常!");
}
} if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("stat流关闭异常!");
}
} if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("con流关闭异常!");
}
} }
}
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner; import JDBCUtils.JDBCUtils; public class add { public static void main(String[] args) {
Connection con = null;
try {
con = JDBCUtils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "INSERT INTO student(studentno,sname,sex,birthday,classno,point,phone,email) VALUES(?,?,?,?,?,?,?,?)";
Object[] params = { "20191811", "Jack", "男", "1988-12-01",
"201901", "239", "16623540978", "Tom.@3218n.com" }; int num = qr.update(con, sql, params);
System.out.println("添加了" + num + "行"); } catch (SQLException e) {
throw new RuntimeException(e);
}
JDBCUtils.close(con);
}
}

(2)删除:

import java.sql.Connection;
import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; import JDBCUtils.JDBCUtils; public class DeleteDemo {
public static void main(String[] args) {
Connection con = null;
try {
con = JDBCUtils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "DELETE from Student where sname =?";
Object[] delete = { "Tom" };
qr.update(con, sql, delete); } catch (SQLException e) {
throw new RuntimeException(e);
}
JDBCUtils.close(con);
}
}

(3)修改:

import java.sql.Connection;
import java.sql.SQLException; import org.apache.commons.dbutils.QueryRunner; import JDBCUtils.JDBCUtils; public class UpdateDemo {
public static void main(String[] args) {
Connection con = null;
try {
con = JDBCUtils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "Update Student set classno=? Where sname='韩吟秋'";
Object[] update = { "201901" };
qr.update(con, sql, update); } catch (SQLException e) {
throw new RuntimeException(e);
}
JDBCUtils.close(con);
}
}

(4)查询:

ArrayHandler: 将结果集的第一行存储到Object[]数组中

ArrayListHandler: 将结果集的每一行存储到Object[]数组中

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler; import JDBCUtils.JDBCUtils; public class SeleteDemo {
public static void main(String[] args) {
Connection con = null;
try {
con = JDBCUtils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "Select * from Student where studentno=?";
Object[] select = { 20191811 };
List<Object[]> list = qr.query(con, sql, new ArrayListHandler(),
select);
// 将记录封装到一个装有Object[]的List集合中
for (Object[] arr : list) {
System.out.println(Arrays.toString(arr));
} } catch (SQLException e) {
throw new RuntimeException(e);
}
JDBCUtils.close(con);
} }

BeanHandler:结果集中第一条记录封装到一个指定的javaBean中。

BeanListHandler:结果集中每一条记录封装到javaBean中,再将javaBean封装到list集合中。

public class Student {
private String studentno;
private String sname;
private String sex;
private String birthday;
private String classno;
private String point;
private String phone;
private String email;
public String getStudentno() {
return studentno;
}
public void setStudentno(String studentno) {
this.studentno = studentno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "Student [studentno=" + studentno + ", sname=" + sname + ", sex="
+ sex + ", birthday=" + birthday + ", classno=" + classno
+ ", point=" + point + ", phone=" + phone + ", email=" + email
+ "]";
}
public String getClassno() {
return classno;
}
public void setClassno(String classno) {
this.classno = classno;
}
public String getPoint() {
return point;
}
public void setPoint(String point) {
this.point = point;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
} }
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler; import JDBCUtils.JDBCUtils; public class SeleteDemo {
public static void main(String[] args) {
Connection con = null;
try {
con = JDBCUtils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "Select * from Student where studentno=?";
Object[] select = { 20191811 };
List<Student> list = qr.query(con, sql,new BeanListHandler<Student>((Student.class)), select);
// 将记录封装到一个装有Object[]的List集合中
for (Student s : list) {
System.out.println(s);
} } catch (SQLException e) {
throw new RuntimeException(e);
}
JDBCUtils.close(con);
} }

ColumnListHandler将结果集中指定的列封装到List集合。

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ColumnListHandler; import JDBCUtils.JDBCUtils; public class SeleteDemo {
public static void main(String[] args) {
Connection con = null;
try {
con = JDBCUtils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "Select * from Student where studentno=?";
Object[] select = {20191811};
List<String> list = qr.query(con, sql,new ColumnListHandler<String>(), select);
// 将记录封装到一个装有Object[]的List集合中
for (String str: list) {
System.out.println(str);
} } catch (SQLException e) {
throw new RuntimeException(e);
}
JDBCUtils.close(con);
} }

查询学生的学号:

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ColumnListHandler; import JDBCUtils.JDBCUtils; public class SeleteDemo {
public static void main(String[] args) {
Connection con = null;
try {
con = JDBCUtils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "Select studentno from Student ";
Object[] select = {};
List<String> list = qr.query(con, sql,new ColumnListHandler<String>(), select);
// 将记录封装到一个装有Object[]的List集合中
for (String str: list) {
System.out.println(str);
} } catch (SQLException e) {
throw new RuntimeException(e);
}
JDBCUtils.close(con);
} }

ScalarHandler返回一个数据

import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ScalarHandler; import JDBCUtils.JDBCUtils; public class SeleteDemo {
public static void main(String[] args) {
Connection con = null;
try {
con = JDBCUtils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "SELECT COUNT(sname) FROM Student";
Object[] select = {};
long count= qr.query(con, sql, new ScalarHandler<Long>(), select);
System.out.println(count);
} catch (SQLException e) {
throw new RuntimeException(e);
}
JDBCUtils.close(con);
} }

MapHandler:将结果集的第一行封装到Map集合中

MapListHandler:将结果集的多条记录封装到一个集合中

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapListHandler; import JDBCUtils.JDBCUtils; public class SeleteDemo {
public static void main(String[] args) {
Connection con = null;
try {
con = JDBCUtils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "Select studentno from Student ";
Object[] select = {};
List<Map<String,Object>> list = qr.query(con, sql, new MapListHandler(),select); // 将记录封装到一个装有Object[]的List集合中
for (Map<String,Object> map : list) {
for(String key : map.keySet()){
System.out.print(key+"..."+map.get(key));
}
System.out.println();
} } catch (SQLException e) {
throw new RuntimeException(e);
}
JDBCUtils.close(con);
} }

增删改查——Statement接口的更多相关文章

  1. 使用DbUtils实现增删改查——ResultSetHandler 接口的实现类

    在上一篇文章中<使用DbUtils实现增删改查>,发现运行runner.query()这行代码时.须要自己去处理查询到的结果集,比較麻烦.这行代码的原型是: public Object q ...

  2. 简单实现 nodejs koa2 mysql 增删改查 制作接口

    1.首先 在电脑上安装 nodejs (此处略过) 2.全局安装 koa2 (这里使用的淘宝镜像cnpm,有兴趣的同学可以自行搜索下) cnpm install koa-generator -g 3. ...

  3. jdbc的连接数据库,使用PreparedStatement实现增删改查等接口

    首先是连接,关闭资源等数据库操作 将连接数据库,关闭资源封装在JDBCUtils里 package jdbc.utils; import java.sql.Connection; import jav ...

  4. 增删改查——PreparedStatement接口

    1.添加 package pers.Pre.add; import java.sql.Connection; import java.sql.DriverManager; import java.sq ...

  5. 如何用tep完成增删改查接口自动化

    tep的设计理念是让人人都可以用Python写自动化,本文就来介绍如何用tep完成增删改查接口自动化. 环境变量 编辑fixtures/fixture_admin.py: "qa" ...

  6. Java数据库连接——JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  7. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  8. hibernate实现增删改查的各种方法

    1>接口(主要是增删改查的接口)BaseDao.java /** * * @author fly.zhou */ public interface IBaseDao { //增加对应实体的一条记 ...

  9. VUE2.0增删改查附编辑添加model(弹框)组件共用

    Vue实战篇(增删改查附编辑添加model(弹框)组件共用) 前言 最近一直在学习Vue,发现一份crud不错的源码 预览链接 https://taylorchen709.github.io/vue- ...

随机推荐

  1. .Net Mvc过滤器观察者模式记录网站报错信息

    基本介绍: 观察者模式是一种对象行为模式.它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.在观察者模式中,主题是通知的发布者,它发出通知时并不 ...

  2. Java面向对象特性总结

    1.面对对象与面对过程的区别 什么是封装?我看到过这样一个例子: 我要用洗衣机洗衣服,只需要按一下开关和洗涤模式就可以了.有必要了解洗衣机内 部的结构吗?有必要碰电动机吗?有必要了解如何通电的吗? 如 ...

  3. BUPTOJj83

    83. A + B Problem 时间限制 1000 ms 内存限制 65536 KB 题目描述 Calculate the sum of two given integers A and B. 输 ...

  4. 《深入理解Java虚拟机》- JVM是如何实现反射的

    Java反射学问很深,这里就浅谈吧.如果涉及到方法内联,逃逸分析的话,我们就说说是什么就好了.有兴趣的可以去另外看看,我后面可能也会写一下.(因为我也不会呀~) 一.Java反射是什么? 反射的核心是 ...

  5. VS引用文件出现黄色感叹号丢失文件,应该如何解决?

    VS是微软开发的一款超级强大的IDE,深受广大.net开发者喜爱. 但是再强大,也会有它的bug和缺点. 多人协同开发时,不知道你有没有遇到一个这样的情况:第二天上班,早早来到公司,打开电脑,拉取一下 ...

  6. idea 打包失败心得一

  7. idea打包失败时,强行打包

    set target_jar="E:\handSight\fras\Jars" cd Jars del fras-.jar rem 拉取最新代码 call git pull ech ...

  8. 从0开始学Git——Git的常见操作

    Git常用命令 创建Git版本库 git init [目录]#创建目录版本库, 不写的话是当前目录 该命令会在目录中创建一个名为.git的隐藏目录 文件提交 添加文件: git add 文件名 #添加 ...

  9. 2019年 iPad无法充电

    2019年 iPad无法充电  到售后网点检测没毛病,可能是apple产品做了低温保护逻辑机制低温无法充电,或者说是冬天温度跟iPad电池充电温度要求不符.各位有遇到情况的可以看看是不是这种问题,这问 ...

  10. Javaweb之文件的上传与下载

    Javaweb之文件的上传与下载 一.基于表单的文件上传 如果在表单中使用表单元素 <input type=“file” />,浏览器在解析表单时,会自动生成一个输入框和一个按钮,输入框可 ...