学习一个网站的全套,后来想放这个网站的链接,然后找不着了。。。罪恶感,实时更新,包含很多自己的理解,不严谨请海涵。
说一下我们的目标。完成SSM框架的学习,并实现天猫全栈。
JAVA—从小白到入门小白
一. Java基础
1.1 HelloWorld
1.1.1 Java运行环境的配置
1.1.1.1 JDK
1.1.1.1.1 JDK介绍
JDK Java SE Development kit Java开发工具包
JRE Java Runtime Environment Java运行环境
JVM Java Virtual Machine Java虚拟机
三者关系:
1.1.1.1.2 JDK下载
- JDK 11 jdk11下载地址
- JDK 8 jdk8下载地址
- 直接用我的JDK【v6y6】
(OS:我丢,到底要下哪个?TIP:区别不大,均可,想要了解区别的童鞋自行了解。)
1.1.1.1.3 JDK环境配置
以win10为例
- 安装好jdk后
- 右击此电脑—>属性—>高级系统设置(左侧)—>高级—>环境变量
- 然后进行环境变量的配置:
总共配三个环境变量(要了解配置意义):
(1) JAVA_HOME(默认是没有的,自己新建JAVA_HOME):配置JDK安装路径。(即你安装在哪,直接把地址粘过来即可)
(2) PATH(在系统环境变量中,存在PATH,打开,跟在后面添加就完事了):配置JDK命令文件的位置。(即打开你的安装目录下的bin目录)
(3) CLASSPATH(默认是没有的,自己新建CLASSPATH):配置类库文件的位置(即安装目录下的lib文件夹位置)。
看着这张图小伙伴肯定要骂了:wdnmd,你这个==%JAVA_HOME%lib==是个什么鸟东西!!!
%JAVA_HOME%调用JAVA_HOME的路劲,一看确实和 lib 路径一样,没毛病奥,老铁!
(TIP:这时候有的同学就想问了,这用户变量和系统变量区别是啥呀!!下面老长一段话你要不想看的话,就一句话 ““系统环境变量” 所有用户都能用,一般同学们只有一个用户,所以说区别不大”)
(系统环境变量。对全部用户起作用,而用户环境变量仅仅对当前用户起作用。为了减少自己所做的修改对其它人的影响,故设置了系用户变量避免影响其它人。对于现在的配置而言,设置用户变量和系统变量的效果大致相同,只是系统变量的路径排在用户变量的路径之前。如果系统变量path里面包含java命令,用户变量Path里面也包含java命令,则他会优先执行系统变量path路径里面包含的java命令。)
好的。结束后,开心的 WIN键+R(cmd)在命令行里输入 java、javac
当你搞完这两个出来一堆(卧槽什么东西一长串)这种东西。你就配完环境变量了!!!
恭喜你,准备开始JAVA之旅吧!!!
1.1.1.2 原始命令行运行JAVA
打开你除了C盘里任何一个盘,在改盘下,新建一个记事本
好,在里面输入(你要不想打,先复制)(你会遇到很多问题,大小写,空格,中英文输入的切换,都可能成为你的拦路虎)
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
保存后,先看下你的
这个开没开,开的话,你建的记事本后面有.txt 的后缀。
把它全选,改成—> HelloWorld.java
打开你可爱的(win+R)输入cmd
- 先输入你创建文件所在的盘符(我在H盘建的文件):H:
- 再输入:javac HelloWorld.java
- 最后输入:java HelloWorld
放一下成功运行的图:
Congratulations!!!!,又进一步!!!
(TIP:在运行 第一步时你会发现,你的HelloWorld.java文件旁边出现了一个HelloWorld.class文件。这是为啥呢?)
来我们简述一下JAVA文件的运行原理(如图所示,上述步骤自行带入理解)
1.1.1.3 使用IDE工具编程
原则上,用上述的开发,也是可以的,IDE开发呢,让你开发更加方便。
理解上呢,就像盖房子,你只有砖头水泥,理论上是可以盖出来的。然后呢用IDE就像给了你很多盖房的工具事半功倍呀。
NM,你说的IDE是什么NM东西(这位同学一看就来祖安)
IDE集成环境:(Integrated Development Environment),可以辅助du开发程序的应用软件,就是你用来编程的软件。JAVA有很多IDE:Eclipes、MyEclipes、IDEA、VScode也都是可以的。
我们使用一开始使用Eclipes
1.1.1.3.1 安装及简单使用Eclipes
要注意,在下载的时候,要注意查看,你的JDK是多少位的,最好相对应。
即:JDK(32/64)位——>Eclipes(32/64)位
不多比比
- 直接安装—直接用我的Eclipes【3k9a】
- 选择工作区:
- 创建JAVA项目
File->New->Other->Java->java Project
- HelloWorld
a.建个包
src包下右键“new”——>“Package”(再建个包)——>com.XXX.XXX(com+公司名+某层)
b.建个类
右键此包——>“new”——>“Class”——>写个类名字(HelloWorld)==(就是你昨天那个HelloWorld.java)==直接创建即可
c.HelloWorld
在HelloWorld.java下输入你昨天练习的HelloWorld.java的代码。写完点击左上角绿油油的开始圆钮,即可执行。
1.1.1.3.2 Eclipse快捷键
来给大家增加一波奇怪的知识(其他的同学们自行发现)
功能 | 快捷键 |
---|---|
批量修改 | Alt+Shift+R |
快速增加main函数 | Alt+/ |
快速输入System.out.println | 1.输入syso 2.Alt+/ |
快速输入for | 1.输入for 2.Alt+/ |
查看Java源代码 | 1.选中方法 2.F3 |
快速注释: | 1.选中代码块 2.Ctrl+Shift+C |
快速解决提示 | 1.找到出错行 2. Ctrl+1 |
大/小写转换 | 1.选中代码块 2. Ctrl+Shift+X/Y |
生成构造方法 | 1.选中代码块 2. Ctrl+Shift+X/Y |
1.2 面向对象
首先明确,什么是面向对象。通过软件工程导论来总体认识面向对象的概念请见我的另一篇实时更新博客——软件工程导论笔记。
这一部分可能会用到UML图。
”WCNM啥是UML图!!!劳资是来学JAVA的!!!“暴躁小伙如是问
UML是面向对象中的一种。。。怎么说。。画图技术。帮你更好的理解面向对象。
1.2.1 类和对象
(先系统说一下类和对象。到后面我们有一节会详细介绍)
比如说:我们要做一个学生管理系统(什么年代了,还尼玛做学生管理系统!!!)。
1.2.1.1 类
那么什么是类呢:
(辣鸡,你这上来百度百科,我不会吗?水平不行呀,拉走下一篇。别急,举个栗子)
🌰1:(还真尼玛是栗子!)
比如在学校中:有老师、学生,我们就可把老师学生当作类。(卧槽!我还把人当作类呢,可以不!!没错是可以的。想建什么类都可以,但是在项目开发中我们要符合实际(符合实际就是要符合规范))
规范先不说,先给大家创建个个类(老师类)
一般我们都是一个文件对应一个类(特殊情况除外,别抬杠)
老师类(Teacher.java):
public class Teacher{
String name;//姓名
int age;//年龄
float salary;//工资
String rank;//职称
//提交分数方法
public void alterPoint(){
System.out.println("提交分数");
}
//获得教师工资
public float getSalary(){
return salary;
}
}
类实质上就像个模板,根据这个类来创建一个个具体的老师。而创建的老师,我们就叫做这个类的对象
1.2.1.2 对象
上面提到,创建的老师,来举几个具体的例子
一个个具体的老师,就叫一个个老师类的对象。
有时我们经常听到一个词叫做实例。现在说有点早。记住一个关系就行(对象包含实例)
//测试类
public class Test{
public static void main(String[] args){
Teacher Zhang = new Teacher();//创建一个张老师对象
Teacher Wang = new Teacher();//创建一个王老师对象
}
}
从上面这个例子看出:(如何创建对象呢)类名 对象名 = new 类名()
1.2.2 属性
一个老师,有姓名、年龄、工资、职称这些我们需要知道的信息。这些信息就叫做类的属性。
属性的类型,可以是
- 基本类型(int(整型)、float(浮点型))
- 类类型(String(字符串))
这时候有的同学想问了,卧槽基本类型我在学C的时候学过,这类类型是什么东西??
保留疑问继续看。
1.2.3 方法
一个老师可以做很多事情,老师这个角色在项目里能做的事情,我们就可以把他称为方法。
比如老师可以提交分数:
1.2.3.1 方法的组成
//直接写方法了
访问控制符 返回值 方法名([参数1],[参数2]....[参数n]){方法体}
(说实话,我一开始看这种结构的时候,超级迷。。我尼玛这都什么东西啊!)
后来才发现这种是最快帮你理解的结构
- “[]” 里面表示可有可无
- 访问控制符 到后面说
- void 即无返回值
- 有参数,返回(return)一下即可
以上两个解决了,你直接结合上面的例子看就非常容易了。
1.2.3.2 使用
那方法和属性是如何使用的呢.。我们基于上述Teacher类来说明
- 属性是如何赋值的(只要是学习,耐心看完所有知识点,别感觉 “卧槽赋值有啥难的,都会" 就跳过)(考研老学长亲身经历)
- 方法如何使用
//测试类
public class Test1{
public static void main(){
Teacher zheng = new Teacher();
//属性赋值第一种方法:对象名.属性名;
zheng.name = "郑X";
zheng.age = 39;
//方法的使用:对象名.方法名();
zheng.alterPoint();
}
}
属性赋值方式先介绍第一种,后面两种提一嘴
- 第一种:对象名.属性名 = XXXXX;
- 第二种:在构造方法里赋值
- 第三种:创建个方法来对其专门赋值
1.3 变量(粗略了解)
1.3.1什么是变量
首先什么是变量?
变量的定义:用来命名一个数据的标识符。
继续举栗子🌰int year = 2020;
int:数据类型,表示整数
year:它首先是一个标识符
”=“:赋值操作符
2020:数字类型的值。(这再不理解我就要祖安喷子了!)
1.3.2变量的类型
那什么又是变量的类型呢?
变量的类型决定了该变量可以包含什么样的值。
变量有8种基本类型。((⊙o⊙)?那你TM写四种)
- 整型(4种)(byte(8位)、short(16位)、int(32位)、long(64位))
- 字符型(1种)(char(16位))
- 浮点型(2种)(float(32位)、double(64位))
- 布尔型(1种)(boolean(1位))
有的同学看着看着产生了两个Question:
- Question1:你给基本类型的长度是什么意思?
答:基本类型的这个长度呢,是为下一节。类型之间的转换做铺垫。继续看吧。 - Question2:我记得之前用过一个"String“ 来放字符,这个里咋没有呢
答:String实际上是一种类类型变量,并不是基本类型。但是它广泛的被使用,常常被误以为是一种基本类型。
⭐插入知识点—字面值
大家在创建对象的时候,还记得创建对象的格式吗?
我们在创建对象时会用到new关键字,但是给一个基本类型变量赋值却不用new。
因此,我们把给基本类型变量赋值的方法叫做字面值。
1.3.3 类型之间的转换
不同类型之间的变量可以相互转换。(用屁股想也知道,肯定不能随便换)
下面介绍一下转换的规则
1.3.3.1 转换的规则
还记得上节说的基本类型的长度吗?
把各种类型想象成杯子(抽象大法好!!,过段时间给大家介绍下抽象大法),长度呢就像杯子的容量
转换呢,就是将杯子里的水倒向另外一个类型的杯子,然后我们引出的是转换的类型,即如何转换:
1.3.3.2 转换的类型
- 小杯子里的水往空的大杯子里头倒,明显是能倒下的。
- 把大杯子里的水往小的空杯子里倒,明显水会溢出(即数据丢失)
1.3.3.2.1 自动转换
我们把上述第1种情况,直接叫做自动转换。我们继续来举个例子。
public class Test2{
public static void main(String[] args){
long l;
int i = 50;
//比较杯子容量,long(64)>int(32),所以可以直接往long里面倒int,即:
l = i ;
}
}
1.3.3.2.2 强制转换
上述第2种情况呢?就是我们要往空的小杯子里面,倒大杯子里面的水。就是明明知道,会造成水的溢出。但是我还是要强行的往里倒。
(蹭蹭,不行,硬上呗,咳咳,硬倒、硬倒)
继续举栗子 (你一定又会产生两个疑问,当你解决这两个问题后,你就又懂了!)
- 原理是啥呀
As we all know, 数据以二进制形式保存。
所以 i2 的值300,对应的二进制数是多少:100101100
所以往 b 里面倒最多取几位?8位呀,从i2后面截8个数:00101100 就是300变44
那为啥 i1 能放下呢?因为你本身就没有很大,我能吃下呀。 - 怎么转呀,格式是啥呀:
存放标识符 =(目的变量类型) 被转变量类型;
- 送你们个不用自己转二进制的方法:
Integer.toBinaryString(变量名)
,直接放到打印里即可。
public class Test3{
public static void main(String[] args){
byte b = 5;
int i1 = 10;
int i2 = 300;
b = (byte) i1;
System.out.println(b);
b = (byte) i2;
System.out.println(b);
System.out.println(Integer.toBinaryString(i2));
}
}
1.3.4 变量作用域
通过栗子来说明变量的作用域
总共有三种情况,都会在下述代码的注释中表现出来。
1.3.4.1 变量分类
public class ZuoYongYu{
//这是第一种——成员变量
int i = 1;
int j = 1;
int k;
public void method1(){
//这是第二种——局部变量
int m = 0;
}
//这是第三种——参数
public void method2(int x){
k = i + j;
System.out.println(k);
}
}
变量类型:
- 成员变量(i,j,k)(也可以叫:字段、属性):它的特点呢,就是被声明在类的下面。然后就有很多同学想问了。我看这里面所有属性都是被声明在类下面的呀。你要知道,类里是要分级的。首先平级的分属性和方法。即成员变量和任何一个方法都是平级的。
它的作用域是整个类都能调用我 - 局部变量(m):局部变量,它实质上就是方法中声明一个变量。
它的作用域呢是在声明开始的位置到其所处块结束为止。
那什么又是块呢?你可以先简单理解为两个大括号之间的就叫块。 - 参数(x):参数是声明在方法的括号里的那个变量
它的作用域是,该方法内部。
tip1 注意
很多人在开发的时候。他设置的,各种类型的变量。很有可能是一样的。就比如成员变量设置有一个设为 i ,局部变量它设为 i ,它参数还是设为 i 。你要把它们分清,并了解他们的优先级,自己尝试一下吧!
tip2 final关键字修饰变量
final这个关键字,加在声明变量前就说明,该变量只能声明一次final int i = 5;
tip3 表达式
以分号结尾的一段代码,就是一句表达式。
1.4 操作符
1.4.1 算术运算符
+、 -、 *、 /、 %、++、 --
//加、减、乘、除、余、自增、自减
1.4.2 关系操作符
> //大于
>= //大于或等于
< //小于
<= //小于或等于
== //是否相等
!= //是否不等
1.4.3 逻辑运算符
& && //长路与 短路与(都为真时,才为真;任意为假就为假)
| || //长路或 短路或(都为假时,才为假;任意为真就为真)
//长短区别(长:无论结果两边都被运算.)(短:第一个确定结果了,后面就不算了.)
! //取反(真变假,假变真)
^ //异或(不同返回真,相同返回假)
1.4.4 位运算(不常用)
位运算是对于二进制而言的。所以你要进行位运算时,需要将你的数转换为二进制。送你一个简便的函数Integer.toBinaryString(),直接可以得到想要的二进制。
| //(位或)对操作数每一位进行或运算 e.g. 5:101 、 6:110 5|6=111=7
& //(位与)对操作数每一位进行与运算 e.g.5&6=100=4
^ //(异或)对操作数每一位进行异或运算 e.g. 5^6=011=3
~ //(取非)对操作数每一位进行取非 e.g. ~5=11111010=-6
<< //(左移):二进制每一位向左移动,最后一位补0
>> //(右移):二进制每一位向右移动
>>> //右移带符号:相当于加个绝对值
1.4.5 赋值运算符
+= //i+=2 ===> i=i+2
-=//以下同理
*=
/=
%=
&=
|=
^=
<<=
>>=
>>>=
1.4.6 三元操作符 和 Scanner操作符
- 三元操作符:表达式 ? 值1: 值2
如果表达式为真 返回值1
如果表达式为假 返回值2 - Scanner操作符
从控制台输入数据,所以需要用到Scanner类import java.util.Scanner;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
//创建Scanner对象。
//s.nextInt()是Scanner类的一个方法,实现向控制台输出int型
//同理可得
Scanner s = new Scanner(System.in);
int a = s.nextInt();
String b = s.nextLine();
float c = s.nextFloat();
String b = s.nextLine();
/*tip:如果在通过nextInt()读取了整数后,
再接着读取字符串,
读出来的是回车换行:"\r\n",
因为nextInt仅仅读取数字信息,
而不会读取回车换行"\r\n".
所以,如果在业务上需要读取了整数后,
接着读取字符串,那么就应该连续执行两次nextLine(),
第一次是取走回车换行,第二次才是读取真正的字符串*/
//就记住用两次就完事了
}
}
二. JAVA中级
2.1 JDBC
2.1.1 MySQL必要知识了解
2.1.1.1 MySQL安装
为JDBC做铺垫
当我们在使用JDBC之前。我们首先要准备MySQL。
-
MySQL-Server
安装方式(提示性):Complete—>Standard Configuration—>设置密码(admin好记)—>安装(四项全对就行)
服务器:MySQL-Server 5.5安装包【6vbm】
安装错误:ConnectionError解决方案 -
MySQL-Front
安装方式:无脑下一步
客户端:MySQL-Front安装包【fbov】
Front登录信息
2.1.1.2 创建数据库及基操
##一.创建
##创建数据库
create database hd;
##创建用户表
Create table examstudent(
Flowid int,
Type int,
Examcard varchar(15),
Studentcard varchar(18),
Studentname varchar(20),
Location varchar(20),
Grade int,
primary key(Studentcard)
)Default charset = utf8;
##二.增数据
##插入数据
insert into examstudent values
(1,4,'000000000000000001','1170131101','周元','哈尔滨','85'),
(2,null,'000000000000000002','1170131102','翟纪元','哈尔滨','56'),
(3,4,'000000000000000003','1170131103','郭宇航','哈尔滨','72'),
(4,null,'000000000000000004','1170131104','付志强','齐齐哈尔','95'),
(5,null,'000000000000000005','1170131105','赵立伟','哈尔滨','64'),
(6,null,'000000000000000006','1170131106','王国涛','哈尔滨','60');
##三.查数据
##查询所有
select * from examstudent;
##统计有多少数据
select count(*) as '数据量' from examstudent;
##分页查询
select * from examstudent limit 0,3;
##四.改数据
##修改学生成绩
update examstudent set Grade = 65 where(Studentcard = '1170131106');
##五.删数据
##删除学生数据
delete from examstudent where(Flowid = 6);
2.1.2 JDBC实操
2.1.2.1 Hello JDBC
(逐层递进,要想快速使用看最后那个即可)
2.1.2.1.1 导入.jar包
访问数据库需要用到一个第三方的类,这些第三方的类都被压缩在一个叫jar的文件。我们一般称为jar包。
通常项目所用到的jar包。我们都会放到项目的lib文件夹下
mysql-jdbc的jar包下载:【7bze】
在Eclipse里导入这个jar包: 右键project->property->java build path->libaries->add external jars
(就相当于你打开此电脑,找到你的项目地址,在项目下创建个文件夹lib,把jar包放进去。再到Eclipse里面导入。
2.1.2.1.2 初始化驱动
首先,第一步我们需要将 驱动类(com.mysql.jdbc.Driver)初始化。这个驱动类就在我们之前的那个jar包中。
那怎么初始化呢?我们需要借助 Class.forName(驱动类);
(实质:Class.forName把这个类加载到JVM中,加载的时候,就会执行静态初始化块,完成驱动的初始化相关工作。)
package jdbc;
//初始化驱动
public class ReJDBC {
public static void main(String[] args) {
//初始化驱动
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库驱动加载成功!");
} catch (ClassNotFoundException e){
e.printStackTrace();
}
}
}
2.1.2.1.3 建立与之前所建数据库的连接
需要建立与数据库的Connection连接。
我们在建立连接(使用getConnection)时需要提供:
- 数据库所处于的IP:127.0.0.1(本机)
- 数据库的端口号:3306
- 数据库名称:hd
- 编码方式:UTF-8
- 账号:root
- 密码:admin
即:(”jdbc:mysql://127.0.0.1:3306/hd?characterEncoding=UTF-8“,“root”,“admin”)
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//建立与数据库连接
public class ConnectJDBC {
public static void main(String[] args) {
try{
//创建连接
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库驱动加载成功!");
//提供数据库的所处地址(127.0.0.1)、数据库端口(3306)、数据库名、编码方式(UTF-8)、账号密码(root/*****)
Connection con1 = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/hd?characterEncoding=UTF-8","root","admin");
System.out.println("连接成功,获取连接对象: "+con1);
} catch(ClassNotFoundException e){
e.printStackTrace();
} catch(SQLException e){
e.printStackTrace();
}
}
}
2.1.2.1.4 创建Statement
(同学们到这,会发现,好像在上一步的基础上,然后我们继续做下一步。对的,我们可以一步创建一个class从头再敲一遍,来熟悉这些代码。)
Statement是用于执行SQL语句的。即我想要执行SQL,我需要先创建个Statement对象。
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
//Statement用于执行SQL语句
public class StatementJDBC {
public static void main(String[] args) {
try{
//初始化驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库驱动加载成功");
//创建连接
Connection con2 = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/hd?charactEncoding=UTF-8","root","admin");
System.out.println("数据库连接成功,获取连接对象:"+con2);
//Statements对象
Statement sta1 = con2.createStatement();
System.out.println("获取Statement对象:"+sta1);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
}
2.1.2.1.5 执行SQL
我们将数据库操作拆分为几步,我刚开始学的时候,WDNM这么长一串,老师说:懂不懂无所谓,照着打就行。
后来自己看的时候,将它分为五步即可
执行SQL的这步,用sta.execute.
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DoSQLJDBC {
public static void main(String[] args) {
try {
//一.加载驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库驱动加载成功");
//二.创建连接
Connection con3 = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/hd?characterEncoding=UTF-8","root","admin");
System.out.println("成功连接数据库,获取连接对象对象为:"+con3);
//三.获得Statement对象
Statement sta2 = con3.createStatement();
System.out.println("成功获取statement,对象为:"+sta2);
//四.通过statement对象,用execute。执行SQL
String sql = "insert into examstudent values(6 , null , '000000000000000006' , '1170131106' , '王国涛' , '哈尔滨' , 66 );";
sta2.execute(sql);
System.out.println("插入成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e){
e.printStackTrace();
}
}
}
2.1.2.1.6 关闭连接
tip:要注意数据库的连接是有限的资源,相关操作结束后,我们需要养成关闭数据库的好习惯
关闭顺序:
- 先关闭statement
- 再关闭Connection
全部:
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class AllTestJDBC {
public static void main(String[] args) {
//提前创建好connection和statement以便判断以关闭
Statement sta3 = null;
Connection con4 = null;
//连接数据
final String hd_name = "root";
final String hd_password = "admin";
final String hd_adress = "jdbc:mysql://127.0.0.1:3306/hd?characterEncoding=UTF-8";
try{
//一.加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库驱动加载成功");
//二.创建连接
con4 = DriverManager.getConnection(hd_adress,hd_name,hd_password);
System.out.println("成功连接数据库,获取连接对象对象为:"+con4);
//三.创建statement
sta3 = con4.createStatement();
System.out.println("成功创建statement对象:"+sta3);
//四.执行SQL语句
String sql = "insert into examstudent values(9,4,'000000000000000009','1170131109','李彤','齐齐哈尔',80);";
sta3.execute(sql);
System.out.println(sql.substring(0,6)+"成功");
} catch(ClassNotFoundException e){
e.printStackTrace();
} catch(SQLException e){
e.printStackTrace();
}
finally{
//五.关闭数据库
if( sta3 != null)
try{
sta3.close();
System.out.println(sta3+":成功关闭");
} catch (SQLException e){
e.printStackTrace();
}
if( con4 != null)
try{
con4.close();
System.out.println(con4+":成功关闭");
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
2.1.2.2 著名的CRDU (笑称“增删改查工程师”)
CRDU是数据库基本操作:
- Create 增
- Retrieve 查
- Update 改
- Delete 删
2.1.2.3 增删改
增删改我们放在一起讲,为什么呢,不告诉你,往下看。嘿嘿(●ˇ∀ˇ●)
在上一节的内容(2.1.2.1.5)里我们已经用了