20155322 《Java程序设计》课堂实践项目 数据库-3-4

数据库-3

实践要求

  • 参考教材代码完成下面的要求,提交能连接到world的截图(有学号水印),并提交代码的码云链接。查询world数据库,获得New Jessey州所有城市的总人口数。

实践步骤

我并没有在MessageDAO上修改,而是直接在之前的Demo上加入了:

            Statement stmt = conn.createStatement(); //创建Statement对象
String sql = "SQL语句"; //要执行的SQL
ResultSet rs = stmt.executeQuery(sql);//创建数据对象

SQL:

SELECT sum(Population) FROM `city` WHERE District= 'New Jersey'

然后使用rs.getString将数据打印出来:

            if(rs.next());
System.out.println(rs.getString(1));

实践中遇到的问题

运行时抛出:java.sql.SQLException: Before start of result set错误



这个错误的原因是因为ResultSet对象代表SQL语句执行的结果集,维护指向其当前数据行的光标。每调用一次next()方法,光标向下移动一行。最初它位于第一行之前,因此第一次调用next()应把光标置于第一行上,使它成为当前行。随着每次调用next()将导致光标向下移动一行。在ResultSe对象及其t父辈Statement对象关闭之前,光标一直保持有效。所以使用rs.getString();前一定要加上rs.next();

参考资料

在加上if(rs.next());之后,就没问题了。

实践代码

/**
* Created by mac on 2017/6/7.
*/
import static java.lang.System.out;
import java.sql.*; public class Connection02 {
public static void main(String[] args)
throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String jdbcUrl = "jdbc:mysql://localhost:3306/world";
String user = "root";
String passwd = "";
try (Connection conn =
DriverManager.getConnection(jdbcUrl, user, passwd)) {
out.printf("已%s数据库连接%n", conn.isClosed() ? "关闭" : "打开"); Statement stmt = conn.createStatement(); //创建Statement对象
String sql = "SELECT sum(Population) FROM `city` WHERE District= 'New Jersey'"; //要执行的SQL
ResultSet rs = stmt.executeQuery(sql);//创建数据对象
//System.out.println("ID" + "\t"+"\t" + "Name" +"\t"+ "\t" + "CountryCode"+ "\t"+"\t" + "Distridt" + "\t"+"\t" + "Population");
//int count = 0;
/*while (rs.next()) {
System.out.print(rs.getInt(1) + "\t"+"\t");
System.out.print(rs.getString(2) + "\t"+"\t");
System.out.print(rs.getString(3) + "\t"+"\t");
System.out.print(rs.getString(4) + "\t"+"\t");
System.out.print(rs.getString(5) + "\t"+"\t");
System.out.println();
count++;
}*/
if(rs.next());
System.out.println(rs.getString(1));
//System.out.printf("There are all %d answers",count);
rs.close();
stmt.close();
conn.close(); } catch (SQLException e) {
e.printStackTrace();
} }
}

Connection02.java

20155322 《Java程序设计》课堂实践项目 数据库-3-4的更多相关文章

  1. 《Java 程序设计》课堂实践项目-数据库

    <Java 程序设计>课堂实践项目数据库 课后学习总结 目录 数据库实验要求 课堂实践成果 课后思考 由于担心做的不好,找同学询问了数据库的问题,学习了数据库的连通,补写的这篇博客.这是补 ...

  2. 《Java 程序设计》课堂实践项目汇总链接

    1.<Java 程序设计>课堂实践项目-命令行参数 2.<Java 程序设计>课堂实践项目-mini dc 3.<Java 程序设计>课堂实践项目-Arrays和S ...

  3. 20155322 《Java程序设计》课堂实践项目MyOD

    20155322 <Java程序设计>课堂实践项目MyOD 实践要求 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 提交测试代码和 ...

  4. 《Java 程序设计》课堂实践项目 课后学习总结

    <Java 程序设计>课堂实践项目 课后学习总结 String类的使用(sort) 目录 Linux命令(sort) 课堂实践 课后思考 学习老师的代码之后的思考:int与Integer ...

  5. 《Java 程序设计》课堂实践项目-类定义

    <Java 程序设计>课堂实践项目类定义 课后学习总结 目录 改变 类定义实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改. ...

  6. 《Java 程序设计》课堂实践项目-简易计算器

    <Java 程序设计>课堂实践项目简易计算器 课后学习总结 目录 改变 简易计算器实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有 ...

  7. 《Java 程序设计》课堂实践项目-Arrays和String单元测试

    <Java 程序设计>课堂实践项目-Arrays和String单元测试 课后学习总结 目录 改变 Arrays和String单元测试实验要求 课堂实践成果 课后思考 改变 修改了博客整体布 ...

  8. 20155308 2016-2017-2《Java程序设计》课堂实践项目

    20155308 2016-2017-2<Java程序设计>课堂实践项目 在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅 ...

  9. # 20155308 2016-2017-2《Java程序设计》课堂实践项目 5月17日

    20155308 2016-2017-2<Java程序设计>课堂实践项目 5/17 本次因为git出现了问题,所以没有按时提交我的代码 问题一 在IDEA中对P145 MathTool.j ...

随机推荐

  1. Java 读取Excel数据——POI-3.11 XSSF

    POI  - the Java API for Microsoft Documents 1.在Apache官网下载Apache最新poi版本:poi-bin-3.11-20141221.zip,解压: ...

  2. AESUtil 加密

    package com.hxqc.basic.dependency.util; import org.apache.commons.lang.StringUtils; import sun.misc. ...

  3. 30、springboot与检索(2)

    项目中进行整合: 1.整合 新建项目加入依赖(NoSql) springboot默认使用SpringDate ElasticSearch模块进行操作   查看自动配置类: SpringBoot默认支持 ...

  4. javascript第一课

    JavaScript 一個完整的JavaScript實現由以下三個不同的部分組成 ECMAScript(ECMA歐洲計算機製造商協會):規定了這門語言的語法,類型,語句,關鍵字,保留字,操作符,對象等 ...

  5. virtualbox+vagrant学习-4-Vagrantfile-7-WinRM Settings

    WinRM Settings 配置命名空间config.winrm config.winrm配置与如何通过winrm配置vagrant访问你的Windows客户相关.与大多数vagrant设置一样,默 ...

  6. Monkeyrunner测试环境搭建

    Monkey手机APP压力测试,是对手机发送伪随机命令,对手机进行按键,触摸等操作,MonkeyRunner是对其发送重复操作的命令,是Monkey的进阶版,可以设置重复的操作或者是重现步骤等.相比较 ...

  7. linux使用秘钥登录(禁用root密码登录)

    目的:为了巩固线上外网服务器的安全,避免黑客攻击植入木马,初步决定禁用root密码登录(安全强度低),统一使用秘钥登录(4096位长度,安全性较高) 具体操作如下: 一.生成ssh秘钥: ssh-ke ...

  8. mysql自增ID过大修改方法

    执行sql: alter table table_name AUTO_INCREMENT=100

  9. Selenium & Webdriver 远程测试和多线程并发测试

    Selenium & Webdriver 远程测试和多线程并发测试 Selenium Webdriver自动化测试,初学者可以使用selenium ide录制脚本,然后生成java程序导入ec ...

  10. HDU 3746 Cyclic Nacklace(求补齐循环节最小长度 KMP中next数组的使用 好题!!!)

    Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...