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操作步 ...
随机推荐
- BZOJ1898: [Zjoi2005]Swamp 沼泽鳄鱼(矩阵乘法)
1898: [Zjoi2005]Swamp 沼泽鳄鱼 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1898 Description 潘塔 ...
- mysql的IFNULL()函数FLOOR(),ROUND()函数
用法说明 1 IFNULL(expr1,expr2) 如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2. IFNULL()返回一个数字或字符串值,取决于它被 ...
- [net tools]nethogs
nethogs 按照从大到小排列占用网络流量的进程 还可以用jnettop察看,总的流量
- 使用tcpdump监控网络消息发送
tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpd ...
- cin.get()、流和缓冲区
大家好,这是我在CSDN的第一篇博客.我是一名学习GIS专业的大学生.我从小开始喜欢编程,可是到现在编程水平却长进不大,依然是菜鸟一个.究其原因,虽然这些年乱七八糟的东西学过不少,但是总的来说还是基础 ...
- Java中String的hash函数分析
转载自:http://blog.csdn.net/hengyunabc/article/details/7198533 JDK6的源码: [java] view plaincopy /** * Ret ...
- JavaScript中this的用法详解
JavaScript中this的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 thi ...
- java项目环境搭建
开发java项目时,由于涉及到版权问题,最好使用开源.免费的软件.比如eclipse. 此外,一个web的java项目涉及到jdk.tomcat等,插件还可能用到svn插件.maven插件. 建议进入 ...
- 【Foreign】Game [博弈论][DP]
Game Time Limit: 20 Sec Memory Limit: 512 MB Description 从前有个游戏.游戏分为 k 轮. 给定一个由小写英文字母组成的字符串的集合 S, 在 ...
- hdu5909 Tree Cutting
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5909 [题解] 设$f_{x,i}$表示以$x$节点的子树中,权值为$i$的子树个数,其中$x$必选. ...