一、 JDBC
1.1 使用命令行直接建立数据库和表
1. 使用命令行
打开开始菜单找到mysql-点击打开命令行-输入使用的密码:123456(机房使用root)
2. 建立数据库
-使用命令create建立数据库:“create database shop(数据库名); ”注意每一句命令后面使用分号结束-使用“use shop”打开数据库(这一句比较特殊不用加分号,不输入这句没办法打开数据库使用来创建表)
3. 创建数据表
-创建表:“create table t_user(id int auto_increment primary key,username varchar(20) not null,password varchar(20) not null,age int(3) default 0,description text);”
使用id自动增长来标识id(如果字段太长可以使用分号换行输入,只要不使用分号就会继续输入) ;char和varchar的区别在于char是定长的,varchar是变长的,char如果只有6个字节,则其余的会用空格补齐,而varchar是设置最长的字节,有多少字节就是多少字节,不会加空格补齐;auto_increment 是设置自动增长;not null不空属性,必须要有,这个属性一般是在程序实现验证不使用数据库验证,避免插入为空时不能往数据库插入导致出错没办法控制;int的默认长度是11;default 0是设置缺省值为0,没有输入时默认为0。
Ok就是提示成功了,error就要重新查看代码问题(这里直接使用键盘的上下箭头,可以直接重新调出代码,直接修改有问题的语句就可以了)
4. 查看
-剩下数据的操作就在程序里面去操作了-使用“show tables;”查看表建好没有-使用“desc t_user;”查看表的结构属性(字段,长度等); “select * from t_user; ”查看表的具体数据
5. 完整代码
- 打开mysql5.7,输入密码:“123456”
- “create database shop(数据库名); ” //建立数据库
- “use shop ”//打开使用数据库
- “create table t_user(id int auto_increment primary key,username varchar(20) not null,password varchar(20) not null,age int(3) default 0,description text);” //建表
- “show tables;”//查看表有哪些
- “desc t_user;”//查看表的结构
- “select * from t_user; ”//查看表的数据
2.2 JDBC项目
新建项目jdbc-直接点击完成-配置服务器-调试,访问http://localhost:8080/jdbc检查项目启动-打开index.jsp,修改pageEncoding为UTF-8-编写项目:
2.1. 数据库访问的步骤
2.1.1 导入数据库驱动jar包(将jar包复制到WEB-INF/lib文件夹)
导入jar有很多种方式可以创建自己的userlib,我们这里使用的jar包只适用于5.几的数据库,不适合其他8.几的数据库,我们将文件ctrl+c ctrl+v到lib下面,这里成功后会产生一个Web App Libraries,下面的jar包是无法展开的,但我们可以通过这个文件查看jar包的结构;如果没有出现上面的文件,可以右键jar包,点击Build Path,Add to Build Path来添加
2.1.2 加载驱动
使用Class.forName(className)把驱动器类加载到内存中去,就可以使用它了,className是驱动器名称,不同的数据库包括mysql不同版本的名称都比一样,“域名的倒序.产品名.类名”:
Class.forName("com.mysql.jdbc.Driver");
2.1.3 获得连接
因为我们要使用驱动,所以需要导入mysql包,所有mysql的包都是在java.sql.*下面,所以我们在import中导入或者在写一条page指令,所有数据库访问的包都在这下面(在servlet中导包方式就不一样,因为有实现类和实现接口,导的时候就要导导接口,而不是实现类,因为要注意面向接口编程)
<%@ page language="java" import="java.util.*,java.sql.*" page
Encoding="UTF-8"%>
获得数据库的连接Connection:
String url = "jdbc:mysql://localhost:3306/shop";
String user = "root";
String password = "123456";
Connection connection = DriverManager.getConnection(url, user, password);
使用的是访问数据库唯一的类,选择有三个参数的get方法,并在上面定义这三个属性:
连接的url:http协议+域名/IP地址(端口号)+数据库名称;不同的数据库有不同的url,修改这三个属性可以使用不同的数据库“jdbc:mysql://”就是jdbc的协议,所有的数据库访问都是这个,只是mysql有变化;mysql默认端口是3306;http协议+域名(IP地址+端口号)访问到机器,然后再加上数据库的名称:“String url = "jdbc:mysql://localhost:3306/shop";”;局域网里面直接IP地址就可以了,互联网要访问数据库需要域名,本地就使用localhost;连接的用户user,连接的密码password
2.1.4 获得句子对象(Statement)
Statement st = connection.createStatement();
2.1.5 通过句子对象执行SQL语句
三个方法: execute(sql) 几乎不用;executeQuery(sql) 用来执行select语句,只要是select就使用这个,其它全部是executeUpdate,executeQuery(sql)返回一个ResultSet对象(结果集),查询的结果数据都存放在它里面;executeUpdate(sql) 用来执行除select语句之外的SQL语句,增加、删除、修改,返回值与前面不同,返回的是一个整数,表示SQL语句影响的记录条数。
String sql = "insert into t_user(username,password,age,description) value('user1','123456',20,'test')";
int count = st.executeUpdate(sql);
if(count==1){
out.print("数据插入成功");
}else{
out.print("数据插入失败");
}
2.1.6 完整代码及效果
<body>
<%
/**
1.导入数据库驱动jar包(将jar包复制到WEB-INF/lib文件夹)
*/
//2.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//3.获得连接Connection
String url = "jdbc:mysql://localhost:3306/shop";
String user = "root";
String password = "123456";
Connection connection = DriverManager.getConnection(url, user, password);
//4.获得句子对象(Statement)
Statement st = connection.createStatement();
//5.通过句子对象执行SQL语句
//三个方法 execute(sql) 几乎不用
//executeQuery(sql) 用来执行select语句
//executeUpdate(sql) 用来执行除select语句之外的SQL语句,返回一个整数,表示SQL语句影响的记录条数
String sql = "insert into t_user(username,password,age,descript
ion)value('user1','123456',20,'test')";
int count = st.executeUpdate(sql);
if(count==1){
out.print("数据插入成功");
}else{
out.print("数据插入失败");
}
%>
</body>
导完了包之后一定要重启服务器,再访问http://localhost:8080/jdbc,显示“数据插入成功”,完成后还要在命令行输入“select * from t_user;”查看表格是否增加了新的数据
2.2 编写项目
复制index.jsp页面命名为list.jsp