Java数据库软件Mysql的安装使用
一.Mysql软件的下载和安装
(一)相关软件的下载
32为Mysql地址:
64为Mysql地址:
可以查看和操作数据库的视图软件:
(二)相关设置
1.管理员权限进入bin文件,进入当前文件的cmd命令页面
(进入方法:按住Shift键点击右键,选择在此处打开命令窗口)
默认安装文件是在:C:\Program Files\MySQL\MySQL Server 5.6\bin
2.mysqld -install 开启服务(有时需要先退出 mysqld -remove),开启成功后以后都不用开启了。可以直接 net start
3.net start mysql开启数据库服务
4.mysql -u root -p 回车无密码,之后可以对数据库进行命令行的操作
二.JDBC的连接
(一)导入数据库工具包:
1.工具包的下载地址:
2.新建java工程项目后,点击右键选择Build Path ->Configure Build Path->添加数据库工具包
添加完数据包就可以用java代码操作数据库了。
(二)数据库和java Eclipse的连接代码:
1.数据库的连接的类
package com.xykj.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
public class DAO {
/**
* 负责连接数据库的类
* */
//基本固定格式的连接的地址
static String sql="jdbc:mysql://localhost:3306/student?user=root&password=&characterEncoding=utf-8";
//连接数据库的方法,返回Connection对象方便关闭!
public static Connection connection(){
try {
//1.加载JDBC驱动:要全名com.mysql.jdbc.Driver.class
Class.forName("com.mysql.jdbc.Driver");
//2.连接数据库
Connection connection=DriverManager.getConnection(sql);
return connection;
} catch (Exception e) {
System.out.println("数据库连接失败!");
return null;
}
}
}
2.数据库的测试连接和操作类
package com.xykj.jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class JDBCTest {
static String tableName = "score";// 表名
public static void main(String[] args) {
Connection conn = DAO.connection();
if (conn == null) {// 没连接成功
return;
}
System.out.println("连接数据库成功!");
// 连接成功后可以执行相关操作
try {
// 创建表格
createTable(conn);
// 实例化一个考试的对象
Score score = new Score("文志", 90, "语文");
// 添加一个数据,方法1
insertTableInfo(conn, score);
// 删除数据,方法1
deleteTableInfo(conn, score);
// 修改数据,方法2:使用占位符:?
updateTableInfo2(conn, score);
// 查看数据
showTableInfo(conn, score);
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println("操作错误!");
} finally {
try {
conn.close();// 关闭数据库连接对象
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// 显示数据
private static void showTableInfo(Connection conn, Score score)
throws SQLException {
List
list = selectTableInfo(conn, score);
for (Score score2 : list) {
System.out.println(score2);
}
}
// 查看数据库表格的数据
private static List
selectTableInfo(Connection conn, Score score)
throws SQLException {
// 根据某个科目,显示它所有的信息
String sql = "select * from score where subject= '"
+ score.getSubject() + "'";
// 创建一个集合来保存获取到的数据
List
list = new ArrayList<>();
// 通过Statement的对象来执行操作
Statement statement = conn.createStatement();
// ResultSet对象
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
// 通过rs获得所有的结果
String name = rs.getString("name");
double score1 = rs.getDouble("score");
String id = rs.getString("id");
String subject = rs.getString("subject");
Score s = new Score(id, name, score1, subject);
list.add(s);
}
return list;
}
// 修改用户的信息方法2,通配符的使用
private static boolean updateTableInfo2(Connection conn, Score score)
throws SQLException {
// 根据用户的姓名和科目可以修改它的分数
String sql = "update score set score=88 where name=? and subject=?;";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, score.getName());
ps.setString(2, score.getSubject());
// 执行操作影响的行数
int row = ps.executeUpdate();
System.out.println(row);
if (row > 0) {
return true;
}
return false;
}
// 删除表里的信息
private static boolean deleteTableInfo(Connection conn, Score score)
throws SQLException {
// 根据对象的科目。删除该科目所有的成绩
String sql = "delete from " + tableName + " where subject = '"
+ score.getSubject() + "'";
// 通过Statement的对象来执行操作
Statement statement = conn.createStatement();
int row = statement.executeUpdate(sql);
System.out.println(row);
if (row > 0) {
return true;
}
return false;
}
// 添加数据的实际操作实现方法1
private static boolean insertTableInfo(Connection conn, Score score)
throws SQLException {
// 添加数据的语句
String sql = "insert into score(name,score,subject) values ('"
+ score.getName() + "'," + score.getScore() + ",'"
+ score.getSubject() + "')";
// 通过Statement的对象来执行操作
Statement statement = conn.createStatement();
int row = statement.executeUpdate(sql);
System.out.println(row);
if (row > 0) {
return true;
}
return false;
}
// 创建表格的实现方法
public static boolean createTable(Connection conn) throws SQLException {
// 创建表的语句
String sql = "create table "+tableName+"("
+ "id integer primary key auto_increment," + "name varchar(3),"
+ "score double(4,2)," + "subject varchar(3)" + ");";
// 通过Statement的对象来执行操作
Statement statement = conn.createStatement();
int row = statement.executeUpdate(sql);
System.out.println(row);
if (row > 0) {
return true;
}
return false;
}
}
本示例也算是比较基础的操作,增删改查的简单格式和命令是要记下来的
上面展示了对数据库的基本操作,其中执行sql语句的两个方法,
一个是没有使用通配符,使用的类是:Statement ;
一种是使用通配符,使用的类是PreparedStatement ;
要替代的变量数据较多的时候使用第二种,不会容易出错。
第一种,对字符的拼接要加很多的单引号。
当然比较简单的语句也是用第一种比较方便的。
PreparedStatement继承自 Statement接口,比Statement对象使用起来更加灵活,更有效率
1.提高了代码的可读性和可维护性
2.提高了安全性
3.提高了SQL语句执行的性能
使用PreparedStatement类在设置sql语句时,可以使用占位符“?”来代替需要的值,然后
使用PreparedStatement类的setXXX方法设置每一位占位符的值。然后在使用execute()来执行sql语句