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->添加数据库工具包

 

 


inno setup java 数据库打包_java高编


 

  

 

添加完数据包就可以用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语句