Java学习笔记(十一)——通过JDBC操作mysql数据库
【前面的话】
时间总是好快,每次都感觉还没有怎么好好去过,对于好多事情,希望自己可以做的更多一点。心情能够好一点,平淡一点就行了。
学习过程中的知识点总结,基础知识,选择阅读。
【JDBC定义】
定义:Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。
ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问数据库管理系统(DBMS)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC的设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。
JDBC的类型
- 通过使用jdbc/obdc桥,然后让odbc驱动程序和数据库进行通信。也就是jdbc——jdbc/obdc桥——odbc。
- 驱动程序是由部分java程序和部分本地代码组成,用于与数据库的客户端API进行通信。
- 驱动程序是纯java客户端类库,它使用一种与具体数据库无关的协议将数据库请求发送给服务器构件,然后该构件再将数据库请求翻译成特定数据库协议。
- 驱动程序是纯java类库,他将jdbc请求直接翻译成特定数据库协议。
【代码】
下面的代码对于Mysql数据库进行操作。
创建数据库代码:
CREATE DATABASE jdbctest;
use jdbctest;
create table user(
userid int(8) unsigned not null auto_increment,
username varchar(20) not null default'',
password varchar(40) not null default'',
email varchar(40) not null default'',
primary key(userid)
);
如下图:
点击可以下载: 代码要加入mysql-connector-java-5.1.25-bin.jar包。
1. JdbcTest.java
package database;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger; public class JdbcTest {
String drivename="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost/jdbctest";
String user="root";
String password="891004";
String insql;
String upsql;
String delsql;
String sql="select * from user";
String name;
Connection conn;
ResultSet rs=null; public Connection ConnectMysql(){
try{
Class.forName(drivename);
conn = (Connection) DriverManager.getConnection(url, user, password);
if (!conn.isClosed()) {
System.out.println("Succeeded connecting to the Database!");
} else {
System.out.println("Falled connecting to the Database!");
}
}catch(Exception ex){
ex.printStackTrace();
}
return conn;
}
public void CutConnection(Connection conn) throws SQLException{
try{
if(rs!=null);
if(conn!=null);
}catch(Exception e){
e.printStackTrace();
}finally{
rs.close();
conn.close();
}
}
//插入、删除、更新的方法是一样的,不一样的是数据库参数
public boolean InsertSql(User user){
try{
insql="insert into user(userid,username,password,email) values(?,?,?,?)";
//上面的方法比下面的方法有优势
//insql="insert into user(userid,username,password,email) values(user.getId,user.getName,user.getPassword,user.getEmail)";
PreparedStatement ps=conn.prepareStatement(insql);
//.preparedStatement(insql);
//PreparedStatement ps=(PreparedStatement) conn.prepareStatement(insql);
ps.setInt(1, user.getId());
ps.setString(2, user.getName());
ps.setString(3, user.getPassword());
ps.setString(4, user.getEmail());
int result=ps.executeUpdate();
//ps.executeUpdate();无法判断是否已经插入
if(result>0)
return true;
}catch(Exception e){
e.printStackTrace();
}
return false;
}
//与其他操作相比较,查询语句在查询后需要一个查询结果集(ResultSet)来保存查询结果
public void SelectSql(String sql){
try{
Statement statement=conn.createStatement();
rs=statement.executeQuery(sql);
while(rs.next()){
name=rs.getString("username");
System.out.println("UserID:"+rs.getString("userid")+" Name:"+name+" email:"+rs.getString("email"));
}
}catch(Exception e){
e.printStackTrace();
}
}
public boolean UpdateSql(String upsql){
try {
PreparedStatement ps = conn.prepareStatement(upsql);
int result=ps.executeUpdate();//返回行数或者0
if(result>0)
return true;
} catch (SQLException ex) {
Logger.getLogger(JdbcTest.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
public boolean DeletSql(String delsql){
try {
PreparedStatement ps = conn.prepareStatement(upsql);
int result=ps.executeUpdate(delsql);
if(result>0)
return true;
} catch (SQLException ex) {
Logger.getLogger(JdbcTest.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
}
2. User.java
package database; class User{//内部类,其字段对应用来存放、提取数据库中的数据
int userid;
String username="";
String password="";
String email="";
//通过set方法,往类的实例里“存放”数据
//通过get方法,从类的实例里“获得”数据,然后再通过插入数据库
public void setId(int userid){
this.userid=userid;
}
public void setName(String username){
this.username=username;
}
public void setPassword(String password){
this.password=password;
}
public void setEmail(String email){
this.email=email;
}
public Integer getId(){
return userid;
}
public String getName(){
return username;
}
public String getPassword(){
return password;
}
public String getEmail(){
return email;
}
}
3. MainTest.java
package database; import java.sql.SQLException;
import database.User; public class MainTest {
public static void main(String args[]) throws SQLException{
JdbcTest cd=new JdbcTest();
User user=new User();
cd.ConnectMysql();
user.setId(12);//每次测试运行都要改变该数字,因为主键要保持唯一。
user.setName("zhangsan");
user.setPassword("we23");
user.setEmail("udjdj@125.com");
cd.upsql="update user set username='we' where userid=5";
cd.delsql="delete from user where userid=1";
cd.InsertSql(user);
cd.DeletSql(cd.delsql);
cd.UpdateSql(cd.upsql);
cd.SelectSql(cd.sql);
cd.CutConnection(cd.conn);
}
}
4. 运行结果:(运行结果大家都不一样,主要看你数据库中有什么样的数据,另外切记每次输入数据库的ID要不一样,因为ID是主键。)
Succeeded connecting to the Database!
UserID:2 Name:zhangsan email:udjdj@125.com
UserID:3 Name:zhangsan email:udjdj@125.com
UserID:4 Name:zhangsan email:udjdj@125.com
UserID:5 Name:we email:udjdj@125.com
UserID:12 Name:zhangsan email:udjdj@125.com
UserID:14 Name:zhangsan email:udjdj@125.com
5. 下图显示数据库存储状况:
【参考资料】
【后面的话】
每天学习一点点,希望这样可以让我进步一点点,加油啦。
分享:(来自知乎日报)
凡是在不恰当的场合或者不恰当的对象前盲目展现自己,不懂克制自己的优越感与资源优势的,都很难称之为有品位。
分寸,就是对问题恰如其分的回应,多一分,腻;少一分,冷。
克制,是在明白生命无常之后对自我的控制,与对生命不同形态的宽容。
雄鹰自有雄鹰的疆场,何必飞入麻雀的山林故展雄姿。
优秀的人已经得到别人内心的认同,无需再求他人无言的自卑。
——TT
Java学习笔记(十一)——通过JDBC操作mysql数据库的更多相关文章
- Nodejs学习笔记(一)--- 操作Mysql数据库
对于一门语言的学习,我个人觉得最好的方式就是通过一个项目来展示,所以从基本的一些模块去了解是最好的方式对于Mysql怎么去链接数据库这个我是在网上找到的(其实一直想找官方文档的,发现没有它的踪迹,(后 ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据
package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...
- JDBC操作MySQL数据库案例
JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...
- 原生Jdbc操作Mysql数据库开发步骤
原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤: 1.导入数据库驱动包 ...
- python学习笔记(七)操作mysql
python操作mysql数据库需要先安装pymysql模块,在之前博客中可翻看如何安装,最简单的就是pip install pymysql 1.导入pymysql模块 import pymysq ...
- 使用JDBC操作MySQL数据库
一.JDBC简介 JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的类和接口组 ...
- Python学习笔记_02:使用Tkinter连接MySQL数据库实现登陆注册功能
1 环境搭建 1.1 Python安装 1.2 MySQL环境搭建 1.3安装MySQLdb 2 具体实现 2.1 登陆界面 2.2 注册界面 2.3 具体实现部分代码 1 环境搭建 1.1 P ...
- Java学习笔记47(JDBC、SQL注入攻击原理以及解决)
JDBC:java的数据库连接 JDBC本质是一套API,由开发公司定义的类和接口 这里使用mysql驱动,是一套类库,实现了接口 驱动程序类库,实现接口重写方法,由驱动程序操作数据库 JDBC操作步 ...
随机推荐
- STL之五:set/multiset用法详解
集合 转载于:http://blog.csdn.net/longshengguoji/article/details/8546286 使用set或multiset之前,必须加入头文件<set&g ...
- 求前n项正整数的倒数和
求前n项正整数的倒数和 前n项正整数的和是一个发散的序列,学过高等数学的这个都知道.所以它没有一个精确的公式,但是近似的公式是有的: 1 + 1/2 + 1/3 + …… + 1/n ≍ ln n + ...
- Itext2.0.8 和freemarker导出pdf
这个是跟上一篇写的freemarker导出word是一块的.但是关联性不是很大.由于本人技术有限本篇导出也是根据网上大家的做出的demo混合而成.有不足的地方请大家指出.好改正,使以后看到的freem ...
- 第一章 深入web请求过程
B/S架构的的好处: 客户端使用统一的浏览器(browser).由于浏览器的统一性,它不需要特殊的配置和网络连接,有效的屏蔽了不同服务提供商提供给用户使用服务的差异性.另外一点是浏览器的交互特性使得用 ...
- Centos下iptables常用命令
安装iptablesyum install iptables-services 重启防火墙使配置文件生效systemctl restart iptables.service 设置iptables防火墙 ...
- Python爬虫学习笔记之微信宫格验证码的识别(存在问题)
本节我们将介绍新浪微博宫格验证码的识别.微博宫格验证码是一种新型交互式验证码,每个宫格之间会有一条 指示连线,指示了应该的滑动轨迹.我们要按照滑动轨迹依次从起始宫格滑动到终止宫格,才可以完成验证,如 ...
- Spring 源码学习(1) —— 自定义标签
Spring 工作流程是先加载解析xml配置文件:配置文件中存在默认的标签,也可以自定义标签.解析默认标签调用: private void parseDefaultElement(Element el ...
- 「6月雅礼集训 2017 Day5」仰望星空
[题目大意] 给你$n$个点,被一个半径为$R$的元圆划分成内(包含边界).外两个部分. 要连若干线,每个点只能连一条线,不存在重点和三点共线. 线只能连在内部点和外部点之间,线长度不超过$d$. 如 ...
- 洛谷P3764 签到题 III
题目背景 pj组选手zzq近日学会了求最大公约数的辗转相除法. 题目描述 类比辗转相除法,zzq定义了一个奇怪的函数: typedef long long ll; ll f(ll a,ll b) { ...
- JS之递归(例题:猴子吃桃)
例题1:公园里有200个桃子,猴子每天吃掉一半以后扔掉一个,问6天以后还剩余多少桃子? var sum = 200; for(var i= 0;i<6;i++) { sum = parseInt ...