培训记录-2
上课主要内容
调试java、mysql等软件的版本。上课讲解jdbc.
新建工程后:
1.新建lib包
2.copy jar包
3.右击add as lib
JDBC
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序
链接七步
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
private static String qudong = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost/java?user=root&password=123456";
3、创建数据库的连接
public static Connection getConnection() throws Exception{
Class.forName(qudong);
Connection connection = DriverManager.getConnection(url);
return connection;
}
4、创建一个Statement
PreparedStatement preparedStatement = null;
String sql = "select * from tb_user";
preparedStatement = connection.prepareStatement(sql);
5、执行SQL语句
resultSet = preparedStatement.executeQuery();
6、处理结果
while (resultSet.next()) {
TbUser user = new TbUser();
user.setId(resultSet.getInt(1));
user.setUsername(resultSet.getString(2));
user.setPassword(resultSet.getString(3));
users.add(user);
}
(user类需自行创建)
7、关闭JDBC对象
public static void closeAll(ResultSet resultSet, PreparedStatement preparedStatement, Connection connection) {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
关闭时,需要先判断指针是否为空。
课后习题
* 功能:
* 1.准备一幅牌(54张)
* 2.洗牌(打乱牌序)
* 3.发牌(三个人)
* 4.留三张底牌
* 5.每个人拿到牌后,对牌进行排序
* 6.出牌...
* 一.发牌(每个人的牌先不排序)
import java.util.Arrays;
public class doudizhu {
public static void main(String arg[]) {
String[] poke = {
"♥A", "♥2", "♥3", "♥4", "♥5", "♥6", "♥7", "♥8", "♥9", "♥10", "♥J", "♥Q", "♥K",
"♦A", "♦2", "♦3", "♦4", "♦5", "♦6", "♦7", "♦8", "♦9", "♦10", "♦J", "♦Q", "♦K",
"♠A", "♠2", "♠3", "♠4", "♠5", "♠6", "♠7", "♠8", "♠9", "♠10", "♠J", "♠Q", "♠K",
"♣A", "♣2", "♣3", "♣4", "♣5", "♣6", "♣7", "♣8", "♣9", "♣10", "♣J", "♣Q", "♣K", "♣小王", "♣大王"};
/*
String[] newpokers = new String[poke.length];
boolean[] mark = new boolean[poke.length];
for(int i = 0 ; i < poke.length ; i ++) {
//a.创建随机数
Random rd = new Random();
//b.获取随机数的下标
int index = rd.nextInt(poke.length);
//c.判断标识
if(mark[index] == false) {
//d.将未洗过的牌存储入newpokers
newpokers[i] = poke[index];
//e.修改标识,被洗过的牌标记为true
}else {
i --; //该次取随机数取到的是洗过的牌,则重新再取一次
}
}
poke = Arrays.copyOf(newpokers, newpokers.length);
System.out.println("洗过的牌:" + Arrays.toString(newpokers)+"\n");
*/
String[] player1 = new String[17];
String[] player2 = new String[17];
String[] player3 = new String[17];
String[] dark = new String[3];
for (int i = 0; i < 100; i++) {
int j = (int) (Math.random() * 54);
int k = (int) (Math.random() * 54);
String o = poke[j];
poke[j] = poke[k];
poke[k] = o;
}
System.out.println("洗过的牌:" + Arrays.toString(poke) + "\n");
for (int i = 0, k = 0; i < 3; i++) {
for (int j = 0; j < 17; j++, k++) {
switch (i) {
case 0:
player1[j] = poke[k];
break;
case 1:
player2[j] = poke[k];
break;
case 2:
player3[j] = poke[k];
break;
}
}
}
for (int i=51,j=0;i<54;i++,j++){
dark[j]=poke[i];
}
System.out.println("玩家1的牌:" + Arrays.toString(player1) + "\n");
System.out.println("玩家2的牌:" + Arrays.toString(player2) + "\n");
System.out.println("玩家3的牌:" + Arrays.toString(player3) + "\n");
System.out.println("地主牌:" + Arrays.toString(dark) + "\n");
}
}