实习第一天:开发环境的安装及JDBC的使用
开发环境及工具的安装
任何开发活动的进行,都需要开发工具的支持。在本次实习的过程中,需要用到Java及数据库相关工具的使用。故需要安装相关的开发环境及工具,许安装软件如下:Java JDK 1.8、IDEA集成开发环境、Tomcat、Maven、MySQL和图形化数据库操作工具SQLyog、Notepad++,有些工具的安装软件服务器设在防火墙外,故可能需要科学上网才能顺利安装。
Java JDK 1.8的安装
在甲骨文公司的官网上下载Java SE 1.8,根据对应的系统版本下载,将安装程序下载后,运行,一路Next,Java环境即可安装好,但此时未配置环境变量,需手动进行环境变量的配置。右键我的电脑-属性-高级系统属性-环境变量-系统变量。新建一个环境变量JAVA_HOME,路径填写Java安装的根目录。编辑Path,添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin,确定保存。
运行java -version,如配置成功,则返回版本信息:
IEDA的安装
点击ideaIU-2018.2.2启动安装,选择合适的系统版本后安装,因程序较大,若需加快启动速度,可将其安装在固态硬盘中,安装完成后如图:
Tomcat及Maven的安装
Tomcat及Maven都是Apache软件基金会的产品,二者的安装包都可在官方网站进行下载。
首先安装Tomcat,运行安装程序,同意安装后会自动启动服务,程序会在本地监听8080端口,测试安装是否成功,可在浏览器输入127.0.0.1:8080,出现如下界面,安装成功。
Maven安装方式和Java环境很像,将文件夹解压到合适位置,添加系统变量,如图所示:
保存后在控制台输入mvn -v,若出现版本信息,则配置成功。
MySQL及SQLyog的安装
运行MySQL安装程序,选择完全安装后,MySQL数据库会自动安装到电脑。安装完成后会启动数据库配置程序,选择第二个标准数据库,Next,选择安装的系统服务名称及是否开机自启,Next,选择root账户密码并将mysql命令加入到系统环境变量中,完成配置,程序会根据用户选择自动进行配置。
可在控制台程序测试mysql命令及是否安装成功:输入mysql -u root -p后输入自定义的root密码,进入数据库环境界面:
SQLyog的安装与其类似,在此不再赘述。
Notepad++的安装
运行npp.7.7.1.Installer安装程序,选择合适的语言及路径后,安装即可。
IDEA集成开发环境的使用及JDBC数据库的连接
使用SQL语言在数据库内创建一个新的数据库,并在数据库内建一张新表user,定义表包含Uno用户编号,Uname用户名及Upwd用户密码。向数据库内添加一些测试用例,如图。
点击桌面上的IntelliJ IDEA 2019.1.2 x64图标,启动IDEA,初次使用会执行默认配置,一路Next,直到出现:
点击第一个Create New Project创建新的Java项目,输入自定义的项目名称,完成创建
右键src-New-Package,新建一个包。建好包后,右键该包-New-class创建一个新的class文件,进行Java语言代码的编写,但在要使用数据库前,需要点击更新一下当前程序,程序会自动下载MySQL的外部jar包。然后点击Files-Project Structure-Modules,点击右侧加号,添加外部数据库jar包,效果如图:
这样即可运行JDBC连接本机数据库,在代码编写段输入测试代码:
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class sql { //定义一个类
public static void main(String[] args) { //主方法
try {
String driver = "com.mysql.jdbc.Driver"; //1.定义驱动程序名为driver内容为com.mysql.jdbc.Driver
String url = "jdbc:mysql://localhost:3306/java?" //2.定义url;jdbc是协议;mysql是子协议:表示数据库系统管理名称;localhost:3306是你数据库来源的地址和目标端口;java是我本人建的表位置所在处,你以你的为标准。
+ "useUnicode=true&characterEncoding=UTF8"; //防止乱码;useUnicode=true表示使用Unicode字符集;characterEncoding=UTF8表示使用UTF-8来编辑的。
String user = "root"; //3.定义用户名,写你想要连接到的用户。
String pass = "123456"; //4.用户密码。
String querySql = "select * from user"; //5.你想要查找的表名。
Class.forName(driver); //6.注册驱动程序,用java.lang包下面的class类里面的Class.froName();方法 此处的driver就是1里面定义的driver,也可以 Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, pass);//7.获取数据库连接,使用java.sql里面的DriverManager的getConnectin(String url , String username ,String password )来完成
//括号里面的url,user,pass便是前面定义的2,3,4步骤内容;
Statement stmt = conn.createStatement(); //8.构造一个statement对象来执行sql语句:主要有Statement,PreparedStatement,CallableStatement三种实例来实现
ResultSet rs = stmt.executeQuery(querySql);//9.执行sql并返还结束 ;ResultSet executeQuery(String sqlString):用于返还一个结果集(ResultSet)对象。
while (rs.next())
{
int Uno = rs.getInt("Uno");
String Uname = rs.getString("Uname");
String Upwd = rs.getString("Upwd");
System.out.println("用户编号:\t" + Uno + " 用户名:\t" + Uname + " 用户密码:\t" + Upwd);
}
if (rs != null) {//11.关闭记录集
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {//12.关闭声明的对象
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {//13.关闭连接 (记住一定要先关闭前面的11.12.然后在关闭连接)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
点击运行后,信息框出现数据库查询结果:
表示数据库连接成功并成功查询了数据库内user表的数据。
附录:PreparedStatement
PreparedStatement接口继承自Statement接口,PreparedStatement比普通Statement对象使用起来更加灵活更有效率.并且比Statement更加安全,因为Statement有一个漏洞就是可以sql注入。
第一步:创建PreparedStatement对象 PreparedStatement pstm
同样是通过Connection的preparedStatement(sql)方法来创建对象,sql语句可具有一个或者多个输入参数,这些输入参数的值在SQL语句创建时未被指定,而是为每个输入参数保留一个问号’?'作为占位符;
示例: 下面的创建语句中就带有3个输入参数的SQL语句 pstm=con.prepareStatement(“update dog set
health=?,love=? where id =?”);第二步:设置每个输入参数的值 通过调用set*()方法来完成(*代表数据类型) 代码: pstm.setInt(1,10);
pstm.setInt(2,90); pstm.setString(3,“d1”); (注意事项:占位符位置从1开始)第三步:执行SQL语句 执行方法与Statement一样.比如:pstm.executeUpdate(); 优点:
创建PreparedStatement对象时会对SQL语句进行预编译,所以执行速度要快于Statement对象,因此,如果程序中存在需要多次执行SQL语句时,应该使用PreparedStatement对象来执行数据库操作,以提高效率。
参考文档:https://blog.youkuaiyun.com/miniduhua/article/details/52885482