下载jar包
先要创建好一个项目,下载驱动包,下载驱动包有两种方式,
1 可以前往对应的官网下载驱动包
2 maven中心仓库下载,步骤如下:
(1)搜索MySQL,选择第一个
(2)选择对应MySQL版本的驱动包(博主这里是5点多的版本,那么只要是5点多的驱动包都可以的)
(3)点击下载
将jar包导入项目中
(1)创建一个目录(名字任意,这里就取为test):
(2)将刚才下载好的jar包导入到刚才创建好的项目中去:
一定先要对刚才下载好的jar包进行复制(ctrl+c),然后如下:
(3)右键目录
此时,完成以上步骤,jar包算是真的导入到了项目中去了
JDBC编程语法知识(insert为例,删和改一样的写法)
获取数据库服务器的位置
public class JDBC { public static void main(String[] args) { //创建Datasource对象,这个对象描述了服务器的位置 DataSource dataSource = new MysqlDataSource(); //设置数据库所在的位置 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/student?character=utf8&&useSSL=false"); //设置登录数据库的用户名 ((MysqlDataSource)dataSource).setUser("root"); //设置登录数据库的密码 ((MysqlDataSource)dataSource).setPassword("123456"); } }
这里解释一下url,url就是描述互联网上的一个资源所在的位置
1 第一部分jdbc:mysql表示表示的就是这个url就是用于jabc mysql的
2 ip地址,是mysql服务器所在的主机的ip地址,这里的ip地址是一个环回ip,表示本机的ip
3 3306代表的是mysql的端口号,在网络中,数据的传送分发给谁,依据的就是端口号,这里默认的就是3306,如果你改了,那就是改动的端口号
4 student表示数据库名
5 character-utf8表示字符集的表示为utf8格式,如果你的服务器是utf8mb,那么也会变成utf8
6 最后一个false代表不加密,true代表要加密
以后对于这个语句的使用,我们不需要记忆,只需要复制粘贴就可以了
这里的数据库用户名,直接填写root就可以了,下一个密码就是你在安装mysql时自己设置的密码,这个就相当于一个模板,之后获取的数据库的位置,也是一样的写法!
注意:
在这里最好不要直接用 MysqlDataSource直接创建实例,而是要用父类Datasource去创建,如果换了数据库,实例对象都是MysqlDataSouece类型,改动的代码太多了,所以还是直接用父类去引用,这样改动的代码就没有多少!
连接数据库
(1) 处理异常,按住alt+enter然后点击enter键就可以如下图所示,进行异常处理
(2)建立连接,一定要是jdbc中的connection
//建立连接
Connection connection =dataSource.getConnection();
输入信息(Scanner)
利用student数据库下有个student表,里面的表头有id和name两种,mysql中的数据类型要与java的数据类型相匹配
Scanner scanner = new Scanner(System.in); System.out.println("请输入你的学号:"); int id = scanner.nextInt(); System.out.println("请输入你的名字:"); String name = scanner.next();
输入sql语句
在输入sql语句我们应该要遵循要想输入自己输入的,而不是固定的,这时有如下写法:
将字符串sql,转化为语句
PreparedStatement statement = connection.prepareStatement(sql);
填充占位符具体的数据:
statement.setInt(1,id);//下标1代表第一个问号,后面就是具体的数据(由于是Int型所以是调用setInt方法,第二个问号填充也是如此)
statement.setString(2,name);
打印填充完的sql语句
System.out.println(“statement:”+statement);
执行这个操作有助于我们排错,检查我们的sql语句是否写正确了
执行sql语句
int ret = statement.executeUpdate();
System.out.println(“ret=”+ret);//可以查看到有几行收到了这个sql语句的影响
回收释放资源
//回收执行语句 statement.close(); //断开连接 connection.close();
整体模块代码(insert 版本)
public class JDBC { public static void main(String[] args) throws SQLException { //创建Datasource对象,这个对象描述了服务器的位置 DataSource dataSource = new MysqlDataSource(); //设置数据库所在的位置 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/student?character=utf8&&useSSL=false"); //设置登录数据库的用户名 ((MysqlDataSource)dataSource).setUser("root"); //设置登录数据库的密码 ((MysqlDataSource)dataSource).setPassword("859833112"); //连接数据库 Connection connection = dataSource.getConnection(); //输入信息 Scanner scanner = new Scanner(System.in); System.out.println("请输入你的学号:"); int id = scanner.nextInt(); System.out.println("请输入你的名字:"); String name = scanner.next(); //输入sql语句 String sql = "insert into student values(?,?)"; //将字符串sql语句转化成可执行的语句 PreparedStatement statement = connection.prepareStatement(sql); //填充占位符 statement.setInt(1,id); statement.setString(2,name); System.out.println("statement:"+statement); int ret = statement.executeUpdate(); System.out.println("ret="+ret); //回收执行语句 statement.close(); //断开连接 connection.close(); } }
执行结果:
从命令行数据库查询结果:
update版本
public class JDBC { public static void main(String[] args) throws SQLException { //创建Datasource对象,这个对象描述了服务器的位置 DataSource dataSource = new MysqlDataSource(); //设置数据库所在的位置 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/student?character=utf8&&useSSL=false"); //设置登录数据库的用户名 ((MysqlDataSource)dataSource).setUser("root"); //设置登录数据库的密码 ((MysqlDataSource)dataSource).setPassword("859833112"); //连接数据库 Connection connection = dataSource.getConnection(); Scanner scanner = new Scanner(System.in); System.out.println("请输入你要修改的名字:"); String name = scanner.next(); System.out.println("输入修改之后的id:"); int id = scanner.nextInt(); String sql = "update student set id = ? where name = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1,id); statement.setString(2,name); System.out.println("statement:"+statement); int ret = statement.executeUpdate(); System.out.println("ret="+ret); //回收执行语句 statement.close(); //断开连接 connection.close(); }
delete版本
public class JDBC { public static void main(String[] args) throws SQLException { //创建Datasource对象,这个对象描述了服务器的位置 DataSource dataSource = new MysqlDataSource(); //设置数据库所在的位置 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/student?character=utf8&&useSSL=false"); //设置登录数据库的用户名 ((MysqlDataSource)dataSource).setUser("root"); //设置登录数据库的密码 ((MysqlDataSource)dataSource).setPassword("859833112"); //连接数据库 Connection connection = dataSource.getConnection(); Scanner scanner = new Scanner(System.in); System.out.println("请输入你要删除的名字:"); String name = scanner.next(); String sql = "delete from student where name = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1,name); System.out.println("statement:"+statement); int ret = statement.executeUpdate(); System.out.println("ret="+ret); //回收执行语句 statement.close(); //断开连接 connection.close(); } }
select版本
public class TestJDBCSelect { public static void main(String[] args) throws SQLException { //1. 创建数据源 DataSource dataSource = new MysqlDataSource(); ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("707703"); //2.建立连接 Connection connection = dataSource.getConnection(); //3. 拼装 SQL String sql = "select * from student"; PreparedStatement statement = connection.prepareStatement(sql); //4. 执行 sql // 查询操作 返回值 不是 int,而是一个 "临时表 " // 使用 ResultSet 表示这个表 ResultSet resultSet = statement.executeQuery(); //5. 遍历结果集合(返回临时表),先获取每一行,在获取这一行的或干列 // next 方法表示获取到一行记录,同时把光标 往后移动一行 // 如果遍历表结束为止,此处的 next 直接返回 false //mysql> select * from student; // +------+--------+ // | id | name | // +------+--------+ // | 2 | 李四 | // | 3 | 王五 | // +------+--------+ while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); System.out.println("id: " + id + ", name=" + name); } // 6. 释放资源 resultSet.close(); statement.close(); connection.close(); } }
查询操作JDBC编程写法
总结
这里所学习的是JDBC最新的一个模式版本,当然还有其他方法可以写,比如反射,但是反射并不好,还是利用本方法的DataSource比较好,因为内置了连接池,频繁的创建以及断开连接的时候,DataSorce显然比反射更加高效!
在JDBC编程中,最核心的内容其实还是sql语句,其他基本就是模板,最主要的还是要加强对sql语句的掌握才是最重要的!!!数据库这方面的内容我们暂时就先学习到这里了!后面我们将继续往下学习有关网络编程的知识以及Javaweb前端的基本知识!