JDBC:

  Java DataBase Connectivity 是java程序连接存取数据库的应用程序接口

  (是sun公司的程序员定义的一套操作数据库的规则,然后下面的各个公司如:mysql,sql sever ,sqlyog等各自实现接口中的方法就是驱动,每个数据库的驱动都不相同

    就像Java中的类一样,Java定义一个接口,下边各个类实现接口中的方法内容都不相同)

  在连接数据库前,需要在项目文件中与src同级的文件中创建文件夹lib,并将mysql-connector-java-5.1.45-bin.jar文件导入项目中,eclipse是build path,idea是add as libary

  jdbc快速入门:

package com.zs.Demo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement; public class JDBCDemo {
public static void main(String[] args) throws Exception {
// 1.加载注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.获得连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/qy97", "root", "123456");
// 查看是否连接数据库成功
System.out.println(conn);
// 3.构建sql语句
String sql="update product set sname='华为' where id=2;";
// 4.创建执行sql语句对象Statement
Statement stat = conn.createStatement();
// 5.执行sql语句
stat.executeUpdate(sql);
// 6.释放资源
stat.close();
conn.close();
}
}

  我们建一个数据表来方便进行操作,上面代码需要以下面的数据库表为基础

use qy97;
create table product(
id int primary key auto_increment,
sname varchar(50),
sprice double
);
insert into product values
(1,'小米',5000.12),
(2,'oppo',4000.54),
(3,'vivo',1999.99);

最上面的jdbc快速入门中,写到的executeUpdate()方法,该方法只能执行insert,update ,delete语句,执行查询语句是,需要用到executeQuery()方法

示例:

package com.zs.Demo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement; public class JDBCDemo2 {
// 查询数据库操作
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/qy97", "root", "123456");
String sql="select * from product ";
Statement stat = conn.createStatement();
// 调用executeQuery()该方法得到的结果是一个结果集
ResultSet rs = stat.executeQuery(sql);
// 使用循环语句输出结果
while(rs.next()){
System.out.print("id:"+rs.getString("id"));
System.out.print("sname:"+rs.getString("sname"));
System.out.print("sprice:"+rs.getString("sprice"));
}
stat.close();
conn.close();
}
}

在之前写Properties类时,我们讲过,当用户更换数据库或者更改数据库账号密码时,那么程序就无法连接数据库了,需要重新找程序员在代码中更改,数据库连接信息,这样是很不方便的,所以我们当时写到,编写一个外部properties文件,将数据库的账号密码信息放在文件中,这样用户就可以通过记事本来更换数据库了,具体实现代码如下:

1.编写外部Properties文件 sql.properties,存放驱动,数据库连接地址,数据库名,密码

driver:com.mysql.jdbc.Driver
url:jdbc:mysql://localhost:3306/qy97
dbuser:root
dbpwd:123456

2.建立读取文件内容,建立连接

package com.zs.Demo;

import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties; public class JDBCDemo3 {
private static String driver;
private static String url;
private static String dbuser;
private static String dbpwd;
private static Connection conn=null;
JDBCDemo3(){
try {
// 获得数据库连接信息
getSqlInfo();
// 链接数据库
connectSql();
//编写数据库语句
String sql="select * from product";
// 执行数据库语句
executeSql(sql);
} catch (Exception e) {
e.printStackTrace();
}
} private void executeSql(String sql) throws SQLException {
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
while(rs.next()){
System.out.println("id:"+rs.getString("id")+
",name:" + rs.getString("sname")+
",price:" +rs.getString("sprice"));
}
stat.close();
conn.close();
} private void connectSql() throws Exception {
if(conn==null){
Class.forName(driver);
conn=DriverManager.getConnection(url,dbuser,dbpwd);
System.out.println(conn);
}
} private void getSqlInfo() throws Exception {
FileInputStream f=new FileInputStream("E:\\workspace\\ZsProjects\\day37\\src\\sql.properties");
Properties p=new Properties();
p.load(f);
driver = p.getProperty("driver");
url = p.getProperty("url");
dbuser = p.getProperty("dbuser");
dbpwd = p.getProperty("dbpwd");
f.close();
} public static void main(String[] args) {
new JDBCDemo3();
}
}

这样就可以读取文件建立连接,用户更改数据库时,直接记事本打开文件就可以更改数据库

Java学习笔记36(jdbc快速入门)的更多相关文章

  1. MyBatis学习笔记(一)——MyBatis快速入门

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4261895.html 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优 ...

  2. 【Python】【学习笔记】1.快速入门

    1.软件安装 从官网下载相应版本的安装包,一般不大. https://www.python.org/ 安装一路默认即可 2. 参考教程:快速入门:十分钟学会Python 本文的内容介于教程(Totur ...

  3. JAVA学习笔记 (一、入门及前期准备)

    博主本来只是会一点python,但是换了新公司这边用的java,边学习边总结吧,共勉之. 一.认识 java (1)java分为三类 JavaSE 基础核心 JaveEE web方向(企业版) Jav ...

  4. 10.3(Java学习笔记)JDBC时间操作

    一.时间分类 数据库     java类 Date  ---- java.sql.Date   表示日期 yyyy-MM--dd (年月日) Time  ----java.sql.Time    表示 ...

  5. 10.2(java学习笔记)JDBC事务简述

    一.事务 事务是指作为一系列操作组成的一个整体,该整体只有两种状态,要么全部执行,要么全部不执行. 当组成这个事务的所有语句都执行成功则该事务执行,只要有一条语句执行失败则该事务不执行. 假设这里有一 ...

  6. 10.1(java学习笔记)JDBC基本操作(连接,执行SQL语句,获取结果集)

    一.JDBC JDBC的全称是java database connection java数据库连接. 在java中需要对数据库进行一系列的操作,这时就需要使用JDBC. sun公司制定了关于数据库操作 ...

  7. Java学习笔记36(File类)

    File类可以对操作系统中的文件进行操作: File类的静态成员变量: package demo; import java.io.File; public class FileDemo { publi ...

  8. 前端学习笔记之ES6快速入门

    0x1 let和const let ES6新增了let命令,用于声明变量.其用法类似var,但是声明的变量只在let命令所在的代码块内有效. { let x = 10; var y = 20; } x ...

  9. 《C++ 101条建议》学习笔记——第一章快速入门

    1.C++程序组成:a.编译指示,由#开始,不由分号结束.只是影响编译过程.b.声明语句,影响编译过程,编译结果中并不会生成对应的指令.只是告诉编译器一些信息.c.可执行过程语句,生成对应的指令.包括 ...

随机推荐

  1. CSS——对height和line-height的理解

    最近在做CSS界面时经常遇到line-height和height这两个属性,一直没搞很明白,今天静下心来好好网上查阅了一下,算是有所领悟.https://blog.csdn.net/a20131263 ...

  2. npm -i 与npm install -s与-d的区别

    npm i module_name -S = > npm install module_name --save 写入到 dependencies 对象 npm i module_name -D ...

  3. 判断(if)语句

    目标 开发中的应用场景 if语句体验 if语句进阶 综合应用 一 开发中的应用场景 转换成代码 判断的定义 如果 条件满足,才能做某件事 如果 条件不满足,就做另外一件事,或者什么也不做 判断语句 又 ...

  4. 腾讯出品的一个超棒的 Android UI 库

    腾讯出品的一个超棒的 Android UI 库 相信做 Android 久了大家都会有种体会,那就是 Android 开发相对于前端开发来说统一的 UI 开源库比较少.造成这种现象的原因一方面是大多数 ...

  5. CSS3 3D酷炫立方体变换动画

    我爱撸码,撸码使我感到快乐! 大家好,我是Counter,本章微博主要利用了CSS3的一些新特性, 主要用到关键帧来使3D图形运动起来,涉及到了一些抽象的思想,立体的想象. 先给大家看看完成的效果,代 ...

  6. Learning-Python【23】:面向对象三大特性

    继承 封装 多态

  7. Maven项目下servlet异常

    今天新建了一个maven项目,导入包的时候红线报错,提示程序包不存在 在网上找了几个方法试过都无效,想起idea自带提示功能,点击红色报错的地方 同时按下Alt+Enter键,选择add maven ...

  8. pinpoint与zipkin的比较

    经过本周部署和测试pinpoint监控平台的工作,我对这套开源系统有了更进一步的认识. 初次见到pinpoint这套系统时,我被它各方面优秀的特征所折服:无需对项目代码进行任何改动就可以部署探针.追踪 ...

  9. collection.Counter

    a=['A','B','C','A','D','E','W','A','B'] b=collections.Counter(a)  # 可以统计a中的各个元素出现的次数print(b)print(b[ ...

  10. Asp.net core 学习笔记 ( Smtp and Razor template 电子邮件和 Razor 模板 )

    refer : https://dotnetcoretutorials.com/2017/08/20/sending-email-net-core-2-0/ https://ppolyzos.com/ ...