1. 创建数据库表


create table Course(
courseId char(5),
subjectId char(4) not null,
courseNumber integer,
title varchar(50) not null,
numOfCredits integer,
primary key (courseId)
);

create table Student(
ssn char(9),
firstName varchar(25),
mi char(1),
lastName varchar(25),
birthDate date,
street varchar(25),
phone char(11),
zipCode char(5),
deptId char(4),
primary key (ssn)
);

create table Enrollment(
ssn char(9),
courseId char(15),
dateRegistered date,
grade char(1),
primary key (ssn, courseId),
foreign key (ssn) references Student(ssn),
foreign key (courseId) references Course(courseId)
);

 

2. 创建JavaFX项目

package application;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage; public class Main extends Application {
private Statement stmt;
private TextField tfSSN = new TextField();
private TextField tfCourseId = new TextField();
private Label lblStatus = new Label();// 存放查询结果 @Override
public void start(Stage primaryStage) {
try {
initializeDB(); Button bsShowGrade = new Button("Show Grade");
HBox hBox = new HBox(5);
hBox.getChildren().addAll(new Label("SSN"), tfSSN, new Label("Course Id"), tfCourseId, bsShowGrade); VBox vBox = new VBox(10);
vBox.getChildren().addAll(hBox, lblStatus); tfSSN.setPrefColumnCount(6);
tfCourseId.setPrefColumnCount(6);
bsShowGrade.setOnAction(new EventHandler<ActionEvent>() { @Override
public void handle(ActionEvent arg0) {
// TODO Auto-generated method stub
String ssn = tfSSN.getText();// 获取输入的SSN
String courseId = tfCourseId.getText();
try {
String queryString ="select firstName, mi, lastName, title, grade from Student, Enrollment, Course" +
" where Student.ssn = '"+ssn+"' and Enrollment.courseId "
+ "= '"+courseId+"' and Enrollment.courseId = Course.courseId"
+ " and Enrollment.ssn = Student.ssn";
String queryStrin = "select firstName, mi, lastName, grade from student, Enrollment where Student.ssn = '11' and Enrollment.ssn = Student.ssn";
ResultSet rSet = stmt.executeQuery(queryString);// 查询数据库,并返回查询结果                 if (rSet.next()) {// 显示查询结果
String firstName = rSet.getString(1);
String mi = rSet.getString(2);
String lastName = rSet.getString(3);
String title = rSet.getString(4);
String grade = rSet.getString(5); lblStatus.setText(firstName + " " + mi + " " + lastName + " " + title + " " + grade);
} else {
lblStatus.setText("Not found");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}); Scene scene = new Scene(vBox, 420, 80);
primaryStage.setTitle("FindGrade");
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
launch(args);
} private void initializeDB() {
try {
Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/dbname", "user", "password"); stmt = conn.createStatement();
} catch (Exception ex) {
ex.printStackTrace();
}
} }

运行结果:输入SSN和courseID,显示查询结果,如图。

另1:在eclipse中安装JavaFX

点击eclipse中的Help->Install New Software,在弹出的窗口中设置如下:

点击Work with框后的Add,在弹出的窗口中,设置如下:Name: ex(fx)lipse,Location:http://download.eclipse.org/efxclipse/updates-released/2.3.0/site/ ,点击OK。上述设置好后,会发现两个插件的复选框:e(fx)clipse – install 安装和e(fx)clipse – single components,选中这两个复选框,完成安装。

另2:开始程序一直报错:Not unique table/alias: 'student',网上查询是因为跟MySQL关键字重名,但并没有重名的字段,最后发现是SQL语句在换行时少了一个空格,因此要注意SQL语句在换行时的空格情况。

3. 利用PreparedStatement创建参数和的SQL语句

package application;

import java.sql.*;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage; public class FindGradeUsingPreparedStatement extends Application{ private PreparedStatement preparedStatement;
private Statement stmt;
private TextField tfSSN = new TextField();
private TextField tfCourseId = new TextField();
private Label lblStatus = new Label();// 存放查询结果 @Override
public void start(Stage primaryStage) {
try {
Connection conn = initializeDB(); Button bsShowGrade = new Button("Show Grade");
HBox hBox = new HBox(5);
hBox.getChildren().addAll(new Label("SSN"), tfSSN, new Label("Course Id"), tfCourseId, bsShowGrade); VBox vBox = new VBox(10);
vBox.getChildren().addAll(hBox, lblStatus); tfSSN.setPrefColumnCount(6);
tfCourseId.setPrefColumnCount(6);
bsShowGrade.setOnAction(new EventHandler<ActionEvent>() { @Override
public void handle(ActionEvent arg0) {
// TODO Auto-generated method stub
String ssn = tfSSN.getText();
String courseId = tfCourseId.getText();
try {
String queryString ="select firstName, mi, lastName, title, grade from Student, Enrollment, Course" +
" where Student.ssn = ? and Enrollment.courseId "
+ "= ? and Enrollment.courseId = Course.courseId"
+ " and Enrollment.ssn = Student.ssn";//问号作为参数的占位符
preparedStatement = conn.prepareStatement(queryString); preparedStatement.setString(1, ssn);//设置占位符处的参数值
preparedStatement.setString(2, courseId);
ResultSet rSet = preparedStatement.executeQuery();//执行查询语句                 if (rSet.next()) {// 显示查询结果
String firstName = rSet.getString(1);
String mi = rSet.getString(2);
String lastName = rSet.getString(3);
String title = rSet.getString(4);
String grade = rSet.getString(5); lblStatus.setText(firstName + " " + mi + " " + lastName + "'s grade on course " + title + " is " + grade);
} else {
lblStatus.setText("Not found");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}); Scene scene = new Scene(vBox, 420, 80);
primaryStage.setTitle("FindGrade");
primaryStage.setScene(scene);
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
launch(args);
}
private Connection initializeDB() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost/dbname", "user", "password");
System.out.println("Database connected"); } catch (Exception ex) {
ex.printStackTrace();
}
return conn;
} }

参考资料:Java语言程序设计 进阶版

利用JavaFX访问MySQL数据库的更多相关文章

  1. 关于利用PHP访问MySql数据库的逻辑操作以及增删改查实例操作

    PHP访问MySql数据库 <?php //造连接对象$db = new MySQLi("localhost","root","",& ...

  2. 利用Python访问Mysql数据库

    首先要明确一点,我们在Python中需要通过第三方库才能访问Mysql. 有这样几种方式:Mysql-python(即MySQLdb).pymysql.mysql-connector.Mysql-py ...

  3. 利用oneproxy部署mysql数据库的读写分离

    实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 oneproxy-rhel ...

  4. 利用xtrabackup备份mysql数据库

    利用xtrabackup备份mysql数据库 一.安装1.直接下载二进制文件wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2. ...

  5. java文件来演示如何访问MySQL数据库

    java文件来演示如何访问MySQL数据库. 注:在命令行或用一个SQL的前端软件创建Database. 先创建数据库: CREATE DATABASE SCUTCS; 接着,创建表: CREATE ...

  6. PHP访问MySql数据库介绍

    在网站后台,经常要与数据库打交道.本文介绍如何使用XAMPP来管理MySql数据库及如何用PHP来访问MySql数据库. 一.使用XAMPP来管理MySql数据库 首先使用XAMPP打开MySql的管 ...

  7. C#连接、访问MySQL数据库

    一.准备工具 visual stuido(本示例使用visual studio 2010) MySql.Data.dll mysql_installer_community_V5.6.21.1_set ...

  8. 在Eclipse中使用JDBC访问MySQL数据库的配置方法

    在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据 ...

  9. C#访问MySQL数据库(winform+EF)

    原文:C#访问MySQL数据库(winform+EF) 以前都是C#连接SQLServer,现在MySQL也比较火了,而且是开源跨平台的,这里连接使用一下,主要是体会一下整个流程,这里使用的是winf ...

随机推荐

  1. 20155339《java程序设计》第十二周课堂实践总结

    Arrays和String单元测试 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 s ...

  2. 20145226夏艺华 EXP5 MSF基础应用

    实践目标 · 掌握metasploit的基本应用方式. · 具体需要完成 (1)ms08_067; (2)ms11_050: (3)Adobe (4)成功应用任何一个辅助模块. 报告 本次实验一共用到 ...

  3. BZOJ1597_土地购买_KEY

    题目传送门 一道斜率优化的题目. 但暴力方程很关键. 我们先将x作为关键字Sort一遍,再将y处理成单调递减,即把无用的土地去除. f[i]=f[j]+a[i]*b[j+] -a[i]*b[j+]+f ...

  4. 13 tcp3次握手 4次释放 mac和ip 访问百度的过程

    1.mac地址和ip地址的不同 (传棒棒糖) 需求:192.168.1.1  ping 192.168.2.1 1):获取默认的网关mac地址 2)寻找下一个网关的mac地址 3)mac地址在变,寻找 ...

  5. 1130: [POI2008]POD Subdivision of Kingdom

    1130: [POI2008]POD Subdivision of Kingdom https://lydsy.com/JudgeOnline/problem.php?id=1130 分析: 有效状态 ...

  6. Zabbix学习之路(七)之Nginx的状态监控

    1.安装nginx [root@linux-node2 ~]# yum install -y nginx [root@linux-node2 ~]# mkdir /etc/zabbix/zabbix_ ...

  7. .net core 无法获取本地变量或参数的值,因为它在此指令指针中不可用,可能是因为它已经被优化掉了

    使用vs 发布.net CORE 项目,调试遇到了“无法获取本地变量或参数的值,因为它在此指令指针中不可用,可能是因为它已经被优化掉了”这个问题,弄了半天才发现是发布的时候没有设置为debug,做个总 ...

  8. 一步步带你配置IIS(包括错误分析)

    今天趁着工作中的问题一下子来解决IIS配置 发布网站:点击VS发布网站 第一步:新建配置文件(我取名为webSite) : 第二步:选择发布方法并且选择把文件发布到哪里(比喻在D盘创建一个文件夹web ...

  9. OpenWrt架设nginx php网站

    参考 http://www.vinoca.org/2012/05/31/openwrt%E6%9E%B6%E8%AE%BEnginxphp%E7%BD%91%E7%AB%99/ 一.安装相关包 opk ...

  10. Vue 项目在其他电脑 npm run dev 运行报错的解决方法

    一个 Vue 项目从一台电脑上传到 github 上之后,再另外一台电脑上 git clone .并使用 npm run dev 或 npm run start 发生以下报错的解决方法.   报错原因 ...