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);
  1. 执行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相关的更多相关文章

  1. Alpha冲刺(5/10)——2019.4.28

    所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(5/10)--2019.4.28 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...

  2. 「FFT」题单(upd 2019.4.28)

    持续更新(last upd 2019.4.28) ZJOI2014 力 [题目链接] 解法 对原式进行转换,然后卷积FFT套上去求解就可以了. 推导过程简洁版: \[F_i=\sum_{j<i} ...

  3. 2019.3.28&2019.3.30考试

    2019.3.28 : 肥肠爆芡,因为这场考试的题太屑了,所以我咕咕了 Upd on 2019.3.30 压进来一篇(因为都没啥意义) 2019.3.30 : 全机房读错题+没有大样例=T2全体爆炸 ...

  4. 2019.2.28&2019.3.1 考试

    因为没A/改几道题,就一起写了 题目在LOJ上都能找到 2019.2.28 100+20+12 前两个小时一直在睡觉+想题也没思路,我太菜了 T1 洗衣服 分开处理出洗衣服和烘干的时间,然后一边正着排 ...

  5. 梦想MxWeb3D协同设计平台 2019.02.28更新

    梦想MxWeb3D协同设计平台 2019.02.28更新 SDK开发包下载地址: http://www.mxdraw.com/ndetail_10130.html 在线演示网址: http://www ...

  6. Beta冲刺(7/7)——2019.5.28

    所属课程 软件工程1916|W(福州大学) 作业要求 Beta冲刺(7/7)--2019.5.28 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪万里 ...

  7. AI2(App Inventor 2)离线版服务器(2019.04.28更新)

    我们的目标:搭建一个本地多用户的App Inventor 2 服务器   演示: http://ai2.fsyz.net  [旧 win]     http://ai2n.fsyz.net [新 Ce ...

  8. 02 JDBC相关

    ====================================================================================JDBC JAVA Databa ...

  9. JDBC相关总结

    JDBC statement的相关总结 1.Statement.PreparedStatement和CallableStatement都是接口(interface). 2.Statement继承自Wr ...

随机推荐

  1. seconds

    set_time_limit();//设置脚本运行时间为1秒

  2. (转)XSS危害——session劫持

    原文地址:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的 ...

  3. win32的计数增减操作的原子操作--InterLockedIncrement和InterlockedDecrement

    InterLockedIncrement and InterLockedDecrement 实现数的原子性加减. 什么是原子性的加减呢? 举个例子:如果一个变量 Long value =0; 首先说一 ...

  4. WOX快速搜索

    WOX wox和mac上的Aflred类似,虽然在功能上稍有逊色,但是还是可以给我们使用windows电脑带来很多福利.首先你不需要在桌面放一堆应用软件的快捷方式,桌面可以非常干净整洁,想要打开某个应 ...

  5. python 测试报告发送邮件

    使用过程成出现的如下错误 smtplib.SMTPDataError: (554, 'DT:SPM 126 smtp5错误解决办法   1.自动化测试中,调用邮件模块自动发送邮件时,运行脚本报错: s ...

  6. Tomcat与Web.xml配置

    1.编码配置 <Connector acceptCount=”100″ connectionTimeout=”20000″ disableUploadTimeout=”true” enableL ...

  7. 301 MovedPermanently 重定向

    页面永久性移走(301重定向)是一种非常重要的“自动转向”技术. 301重定向可促进搜索引擎优化效果 从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法.当网站的域名发生变更后,搜索引 ...

  8. 多态实现的原理------新标准c++程序设计

    “多态”的关键在于通过基类指针或引用调用一个虚函数时,编译时不确定到底调用的是基类还是派生类的函数,运行时才确定.例子: #include<iostream> using namespac ...

  9. 80端口被system(pid=4)占用

    1.查看80端口被哪个进程占用,cmd->netstat -ano | findstr 80 2.cmd->tasklist列出当前运行中的进程,或在任务管理器中查看pid为4的进程. 经 ...

  10. 【转】如何把CD上的音乐拷贝到电脑上

    参考:https://www.ixueshu.com/document/9c44893da6e90cf7318947a18e7f9386.html 参考:https://jingyan.baidu.c ...