2019.3.28 JDBC相关
JDBC(Java Data Base Connectivity)
JDBC是一组用Java编写的类和接口
- 使用JDBC的好处:
- 1.Java的开发人员完全不需要关心数据库的连接方式和实现手段
- 2.提高代码的可维护性,是一种组件化思想
- 3.代码的执行效率很高 速度很快
- JDBC的缺点
- 1.代码繁琐(最大毛病)
- 2.维护代价高
编写JDBC
增删改(都差不多 就写一个了)
1.获取连接
下面的四个信息,只有当开发者在更换数据库时候需要改,其他所有的都不需要改
String url = "jdbc:mysql://localhost:3306/j0302";
String username = "root";
String password = "1234";
String driver = "com.mysql.jdbc.Driver"; // 驱动
Student student = new Student();
student.setName("王五");
student.setAddress("上海");
Connection conn = null;
PreparedStatement stmt = null;
try {
//加载驱动
//Java反射技术
Class.forName(driver);
//创建一个数据库连接
conn = DriverManager.getConnection(url, username, password);
执行SQL语句
//正常sql
// stmt = conn.prepareStatement("insert into student values (null ,'lisi','beijing')");
//字符串拼接实现sql缺点:麻烦,难以维护;不安全,完全无法避免SQL注入
// stmt = conn.prepareStatement("insert into student values (null,'"+student.getName()+"','"+student.getName()+"')");
stmt = conn.prepareStatement("insert into student(name,address) values (?,?)");
//给上述sql的占位符赋值
stmt.setString(1,student.getName());
stmt.setString(2,student.getAddress());
//增删改都使用该方法
int i = stmt.executeUpdate();
//i代表这次sql语句执行
System.out.println(i);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
//3.关闭资源
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
查
public class QueryClass {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/j0302";
String username = "root";
String password = "1234";
String driver = "com.mysql.jdbc.Driver";
//jdbc查询的写法
//jdbc查询的目的:就是为了获取相应对象的list
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
List<Student> list = new ArrayList();
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
String sql = "select * from student";
stmt = conn.prepareStatement(sql);
//执行查询返回一个结果集
rs = stmt.executeQuery();
//rs.next()用来获取下一行数据
while (rs.next()){
int sid = rs.getInt("sid");
System.out.println(sid);
String name = rs.getString("name");
System.out.println(name);
String address = rs.getString("address");
System.out.println(address);
//每次循环都要创建一个新的stu 用来存储数据
Student stu = new Student();
stu.setId(sid);
stu.setName(name);
stu.setAddress(address);
list.add(stu);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
工具及工程:
JDBC工程
链接:https://pan.baidu.com/s/1-aUnJ9udezZufcO8YT38hA
提取码:2e78
JDBC优化
链接:https://pan.baidu.com/s/1OR2zfxPvVgfk5WQZZ-C0Rw
提取码:zkv3
2019.3.28 JDBC相关的更多相关文章
- Alpha冲刺(5/10)——2019.4.28
所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(5/10)--2019.4.28 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...
- 「FFT」题单(upd 2019.4.28)
持续更新(last upd 2019.4.28) ZJOI2014 力 [题目链接] 解法 对原式进行转换,然后卷积FFT套上去求解就可以了. 推导过程简洁版: \[F_i=\sum_{j<i} ...
- 2019.3.28&2019.3.30考试
2019.3.28 : 肥肠爆芡,因为这场考试的题太屑了,所以我咕咕了 Upd on 2019.3.30 压进来一篇(因为都没啥意义) 2019.3.30 : 全机房读错题+没有大样例=T2全体爆炸 ...
- 2019.2.28&2019.3.1 考试
因为没A/改几道题,就一起写了 题目在LOJ上都能找到 2019.2.28 100+20+12 前两个小时一直在睡觉+想题也没思路,我太菜了 T1 洗衣服 分开处理出洗衣服和烘干的时间,然后一边正着排 ...
- 梦想MxWeb3D协同设计平台 2019.02.28更新
梦想MxWeb3D协同设计平台 2019.02.28更新 SDK开发包下载地址: http://www.mxdraw.com/ndetail_10130.html 在线演示网址: http://www ...
- Beta冲刺(7/7)——2019.5.28
所属课程 软件工程1916|W(福州大学) 作业要求 Beta冲刺(7/7)--2019.5.28 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪万里 ...
- AI2(App Inventor 2)离线版服务器(2019.04.28更新)
我们的目标:搭建一个本地多用户的App Inventor 2 服务器 演示: http://ai2.fsyz.net [旧 win] http://ai2n.fsyz.net [新 Ce ...
- 02 JDBC相关
====================================================================================JDBC JAVA Databa ...
- JDBC相关总结
JDBC statement的相关总结 1.Statement.PreparedStatement和CallableStatement都是接口(interface). 2.Statement继承自Wr ...
随机推荐
- laravel实现多对多的分析
在实际开发中多对多的开发还是比较常见的 1.1首先由migrate来创建表(文章表) 1.2同理创建标签表 1.3这是 我会的到如下结果: 2.1在数据迁移表contents中添加几个字段 publi ...
- Mybatis——Spring整合
一.引入依赖 Spring的相关jar包 mybatis-3.4.1.jar mybatis-spring-1.3.0.jar mysql-connector-java-5.1.37-bin.jar ...
- (转)ASP.NET MVC4+EasyUI+EntityFrameWork权限管理系统——数据库的设计(一)
原文地址:http://www.cnblogs.com/cmsdn/p/3371576.html 快一年没写博客了,这段时间感觉好迷茫,写点博客,记录一下自己的成长过程,希望对大家也有帮助 先上图 一 ...
- HTML__图片轮播ion-slide-box
先大概描述一下要做的界面: 从网络请求json数据,获取网络图征数据,然后轮播图片.我遇到的问题是:图片不显示,代码如下 <ion-slide-box does-continue="t ...
- DropDownList1.Items.Insert 与 DropDownList1.Items.Add 的区别
DropDownList1.Items.Insert 与 DropDownList1.Items.Add 的区别 dropwdownist1.items.insert 是可以添加在制定索引处的 而dr ...
- orcl 对table的一些操作
删除 table:drop table 表名: 恢复删除 : flashback table 表名 to before drop: 清空table : truncate table 表名; 恢复清空: ...
- Partial关键字
Partial关键词定义的类可以在多个地方被定义,最后编译的时候会被当作一个类来处理. 首先看一段在C#中经常出现的代码,界面和后台分离,但是类名相同. public partial class Fo ...
- SQL多行并一行统计例子之STUFF()函数+FOR XML PATH()函数应用
SELECT * FROM tbiz_ProjectRelation 目标统计每个项目有几条申请记录 Step1 SELECT ProjectID , RelationIDs , , '') FROM ...
- Selenium API(一)
1.设置浏览器大小: # -*- coding:utf- -*- from selenium import webdriver import time driver = webdriver.Firef ...
- 第0篇 Python前言
1.注释 1)注释的作用: 用自己熟悉的语言在代码中添加注释,方便后期自己查看和理解,也方便其他人查看和理解代码含义. 2)单行注释: 以#号开头,#后面的所有内容均不会被程序执行,起到辅助说明的作用 ...