Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
240 changes: 240 additions & 0 deletions docs/views/dev/2020-11-15-Java连接数据库.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
---
layout: post
title: Java连接数据库
date: 2020-11-01
author: XiaoJia849
categories:
- 开发部
tags:
- 后端
- 数据库
- Java
---

# 下载

mysql-installer-community-8.0.20.0下载:

[https://pan.baidu.com/s/1JowAkm1O5O7iLn1H-072Zw](https://pan.baidu.com/s/1JowAkm1O5O7iLn1H-072Zw)

提取码:yf69

navicat 下载

[https://pan.baidu.com/s/17_z76E9DgIlCBwY81maSVQ](https://pan.baidu.com/s/17_z76E9DgIlCBwY81maSVQ)

提取码:1hdt

ecplise

自行在官网下载,安装

mysql-connector-java-5.1.46-bin 用于数据库的连接

[https://pan.baidu.com/s/19UtMM4TzlicRkEPuv7hyzw](https://pan.baidu.com/s/19UtMM4TzlicRkEPuv7hyzw)

提取码:ovhx

下载包链接如上,具体安装请查询CSDN

# 数据库的准备

## 建立连接

打开Navicat——点击连接——MySQL

![新建连接](https://upload-images.jianshu.io/upload_images/25040907-c0a45523baf1ba76.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

连接名——自拟

用户名,密码——与MySQL下载时保持一致

先连接测试确认成功后再按确定

## 建立数据库

双击 连接名 得到:

![数据库的初始内容](https://upload-images.jianshu.io/upload_images/25040907-275a702e6c66c9b0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

以上4个数据库请不要随意使用

右键 连接名 新建数据库

![新建数据库](https://upload-images.jianshu.io/upload_images/25040907-df6a7bdd3c5a23b5.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

数据库名——自拟

如果使用的数据库内包含中文字符,最好

字符集使用gb2312或者utf8

对应的排序规则(我不清楚有什么特别的规定,我的习惯是:)

对应的是gb2312_chinese_ci  utf8_unicode_ci

## 例子:

双击数据库得到如下:

![数据库内容](https://upload-images.jianshu.io/upload_images/25040907-8dc80b1585ceb53e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

右键 表 新建表

开始设置字段的 名 类型 长度 小数点 ,,,,

设置结束后 点击保存

得到弹窗 输入表名即可

## 转储数据库

右键 数据库名 转储SQL文件结构和数据

选择地址

即得到这个数据库的SQL文件

## 运行SQL文件

右键连接名 运行SQL文件

![运行SQL文件](https://upload-images.jianshu.io/upload_images/25040907-bbe45d569f2032f1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

找到文件的地址

编码与文件编码对应即可,例如:建立此数据库时采用gb2312,那么打开时也这么使用

## 可能遇到的问题

1.无法通过 右键 连接名 运行SQL文件 的方式打开此文件

解决方案:自己创立一个数据库后,点击 表 右键 运行SQL文件

2.运行SQL文件失败

Debug方法,只需观察报错信息的第一行,查询错误代码对应的意义,针对性的de

如果爆语法错误,可能是因为MySQL的版本不太统一造成的。

# ecplise上web项目的创建和连接数据库

## 创建项目

File-new-Dynamic Fragment-Project

![创建项目](https://upload-images.jianshu.io/upload_images/25040907-edf57b628bf6508f.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Project name 项目名 自拟

服务器 我使用的是tomcat9

版本 注意!!!! 请使用2.5

原因:2.5的会自动在创建servlet时更行web.xml,非常方便!!!

## 补充没有的jar

右键 项目名Build Path

![添加jar包](https://upload-images.jianshu.io/upload_images/25040907-ed0f8ca3ada4a519.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

点击Add External JARS 连接mysql-connector-java-5.1.46-bin这个jar包

点击Apply and Close结束

所有的添加tomcat和jre没有的jar包的方式都是这样

## 文件书写的结构(仅用来记录个人习惯)

![文件书写结构](https://upload-images.jianshu.io/upload_images/25040907-0c7795dab9fc4eb0.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Java Resources内的src中

创建Ja包内写入JAVA文件

创建Se包内写入SERVLET文件

在WebContent内写入jsp和html文件

## 详细介绍JAVA 连接数据库和运用数据库的步骤

### 在Se包内创建servlet文件,DB.java

```java
package Se;

import java.sql.*;

public class DB  {

public static Connection dbCon(){

        Connection  con = null;

        try {

            Class.forName("com.mysql.jdbc.Driver");

            con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名?useSSL=false", "MySQL用户名", "MySQL密码");

        } catch (Exception e) {

        e.printStackTrace();//用于打印错误

        }

        return con;

    }

}
```
?useSSL=false是为了防止因为MySQL版本过高报错

### 查询数据库

```java
        try {

    PreparedStatement ps =DB.dbCon().prepareStatement("select user_age from user_info where user_name=? and user_password=?");

    ps.setString(1, name);

    ps.setString(2, pass);

    ResultSet rs = ps.executeQuery();

            if(rs.next()){

            userInfo.setAge(rs.getInt(1));

            }else{

            }

        }catch (Exception e) {

}
```
### 插入数据库

```java
try {

        PreparedStatement ps =DB.dbCon().prepareStatement("insert into user_info (user_name,user_password,user_age) values(?,?,?)");

    ps.setString(1,user_name);

    ps.setString(2, lpassword);

    ps.setInt(3, age);

    ps.executeUpdate();

}catch (Exception e) {

        e.printStackTrace();

}
```
Loading