Java访问数据库实例详解

JAVA程序想要访问数据库,需要进行如下准备:

1.安装一个数据库(这里使用mysql免安装版)
2.下载该数据库的驱动包(这里使用mysql官方提供的mysql-connector-java-5.1.39-bin)

PS:我的这个免安装的MySQL不知道为什么存储的中文都是乱码,参考了别人的解决方案修改了my-default.ini文件也不行,如果各位看到这篇文章的大佬有解决办法,还请不吝赐教,感谢!

一、启动数据库

将mysql免安装压缩包解压到某目录下
双击 mysql-5.6.24-win32 => bin => mysqld.exe 启动数据库
正常情况下会闪过一个黑框
打开DOS窗口,进入mysql文件夹所在盘(我的是D盘)
依次输入如下命令:
cd mysql* => cd bin =>mysql -uroot
(出现如下图提示说明已经进入数据库,可以开始使用数据库了)

二、创建数据库

你可以直接在DOS窗口输入sql语句创建数据库;
也可以将你的所有操作保存到一个sql文件,再在DOS窗口导入这个文件。(由于创建数据库的命令较多,这里采用第二种方法)
创建db.sql文件(我保存到了D盘)

create database if not exists stu;
use stu;
drop table if exists classes;
create table classes(
id int(10) primary key auto_increment,
num varchar(12) not null ,
name varchar(45) not null,
teacher varchar(15) not null,
unique(name),
unique(num)
);
insert into classes(num,name,teacher ) values('20170101','Mike','Tom');
insert into classes(num,name,teacher ) values('20170102','Nancy','Tom');
insert into classes(num,name,teacher ) values('20170103','Frank','Tom');

然后在DOS窗口输入:source d:/db.sql;
(出现如下图提示说明导入成功)

查看数据库里的数据

三、JAVA程序导入jar包

eclipse里创建项目jdbc
将下载好的jar包复制到该项目下

右击jar包 => Build Path => Add To Build Path

四、连接数据库

创建DBCon文件,获取数据库连接对象

package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBCon {
    public Connection con=null;    //创建数据库连接对象
    String url="jdbc:mysql://localhost:3306/stu";   //指定所要连接的数据库的URL
                                                    //3306表示要连接的是本地数据库;stu为要连接的具体数据库名称
    String user="root";       //用户名
    String password="";       //密码
    public Connection getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");    //加载数据库驱动器
            
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            con=(Connection)DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return con;
    }
}

五、测试

创建Classes类文件,保存和访问学生数据

public class Classes {
    private String num;
    private String name;
    private String teacher;
    public Classes() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Classes(String num, String name, String teacher) {
        super();
        this.num = num;
        this.name = name;
        this.teacher = teacher;
    }
    public String getNum() {
        return num;
    }
    public void setNum(String num) {
        this.num = num;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getTeacher() {
        return teacher;
    }
    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }
    

}

创建测试类Test

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import db.DBCon;

public class Test {
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Connection cn;
        PreparedStatement psm=null;    //PrepareStatement接口用来执行动态的sql语句
        ResultSet rs;    //ResultSet接口用来暂存数据库查询出的结果集
        DBCon dbcon=new DBCon();
        cn=dbcon.getConnection();    //获取数据库对象
        Classes classes=new Classes();
        String sql="select * from classes";
        try {
            psm=cn.prepareStatement(sql);    //实例执行sql语句
            rs=psm.executeQuery();    //将结果赋给rs指针
            if(rs.next()) {            //判断是否查询到结果
                rs.absolute(0);        //将rs指针置于结果集最上方
                while(rs.next()) {
                    String classNum=rs.getString(2);
                    String className=rs.getString(3);
                    String classTeacher=rs.getString(4);
                    classes.setNum(classNum);
                    classes.setName(className);
                    classes.setTeacher(classTeacher);
                    System.out.println(classes.getNum()+","+classes.getName()+","+classes.getTeacher());
                }
                
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}

运行Test文件,出现所查询内容

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java实例讲解反射机制是怎么一回事

    Java反射机制的概述 1.Java的反射(reflection) :机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法.这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制.反射被视为动态语言的关键,反射让Java成为一个准动态语言 .缺点增加不安全性. 2.动态语言(弱类型语言) 是运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型..

  • Java超详细教你写一个网络购书系统案例

    目录 一.购书系统 1.前言 2.功能介绍 3.分析 二.图书类(Book) 1.类名及属性 2.代码示例 三.订单项类(OrderItem) 1.类名及属性 2.代码示例 四.订单类(Order) 1.类名及属性 2.代码示例 五.测试类(Test) 1.编写打印图书信息的方法 2.编写购买图书的方法 3.编写打印订单信息方法 4.编写main方法 六.总结 一.购书系统 1.前言 伴随着互联网的飞速发展,网络购书系统作为电子商务的一种形式,正以其高效.低成本的优势逐步成为新兴的经营模式,人们

  • Java超详细教你写一个银行存款系统案例

    目录 一.银行存取款 1.前言 2.描述 3.分析 二.银行账户类(BankAccount) 1.方法 2.变量 3.代码示例 三.测试类(Test) 1.要求 2.代码示例 3.运行结果 四.总结 一.银行存取款 1.前言 毕竟谁不喜欢钱呢!(不是) 我看谁不喜欢在知识的海洋中遨游! 2.描述 银行存取款的流程是人们非常熟悉的事情,用户可以在银行对自己的资金账户进行存款.取款.查询余额等操作,极大的便利了人们对自己资金的管理. 编程要求:使用Java知识编写一个银行存取款的程序,实现存取款功能

  • Java实例项目零钱通的实现流程

    目录 老韩思路: 一些说明 SmallChangeSys用来写main方法代码如下 具体说明各个方法的作用: publicvoidmenu()方法 voiddetailed_()方法 publicvoidinput()方法 publicvoidoutput()方法 SmallChangeSysOOP完整代码 一些图片 注意:本项目来自B站韩顺平老师 点此跳转 完整代码请看这里:gitee 点击这里 GitHub链接 如图: 老韩思路: (1)可以把收益入账和消费,保存到数组中(但目前学到的数组是

  • Java几个实例带你进阶升华下篇

    目录 前言 一.案例1:两只老虎 二.案例2:三个和尚 三.案例3:考试奖励 总结 前言 以下为本文要记录的大概内容: Java基础案例: 两只老虎.三个和尚.考试奖励 以下是本篇文章正文内容,仅供参考 一.案例1:两只老虎 1.题目: 动物园里有两只老虎,已知两只老虎的体重分别为180kg.200kg,请用程序实现判断两只老虎的体重是否相同. 2.分析: 定义两个变量用于保存老虎的体重(单位为kg,这里只体现数值即可) 用三元运算符实现老虎体重的判断,体重相同,返回true,否则返回false

  • Java超详细教你写一个学籍管理系统案例

    目录 前言 一.学籍管理系统功能介绍 1.介绍 2.学籍管理系统的主要功能图示 3.代码编写的思路 二.定义学生类 1.学生类名称: 2.包含的成员变量 3.构造方法 4.成员方法 5.代码示例 三.主界面的代码编写 1.思路 2.代码示例 四.系统功能方法的实现 1.添加学生信息的代码编写 1.1 思路 1.2 添加学生信息的方法说明图 1.3 代码示例 2.查看学生信息的代码编写 2.1 思路 2.2 查看学生信息的方法说明图 2.3 代码示例 3.删除学生信息的代码编写 3.1 思路 3.

  • Java访问数据库实例详解

    JAVA程序想要访问数据库,需要进行如下准备: 1.安装一个数据库(这里使用mysql免安装版)2.下载该数据库的驱动包(这里使用mysql官方提供的mysql-connector-java-5.1.39-bin) PS:我的这个免安装的MySQL不知道为什么存储的中文都是乱码,参考了别人的解决方案修改了my-default.ini文件也不行,如果各位看到这篇文章的大佬有解决办法,还请不吝赐教,感谢! 一.启动数据库 将mysql免安装压缩包解压到某目录下双击 mysql-5.6.24-win3

  • Java 多线程优先级实例详解

    Java 多线程优先级实例详解 线程的优先级将该线程的重要性传递给调度器.尽管CPU处理现有线程集的顺序是不确定的,但是调度器将倾向于让优先权最高的线程先执行. 你可以用getPriority()来读取现有线程的优先级,并且在任何时刻都可以通过setPriority()来修改优先级. import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class SimplePrio

  • Java 反射机制实例详解

    Java 反射机制实例详解 一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,Java和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反射.通过反射,Java可以于运行时加载.探知和使用编译期间完全求和的类.生成其对象实体,调用其方法或者对属性设值.所以Java算是一个半动态的语言吧. 反射的概念: 在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对

  • java 内部类的实例详解

    java 内部类的实例详解 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类. public class OuterClass { private String name ; private int age; public String getName() { return name; } p

  • 原生js中ajax访问的实例详解

    原生js中ajax访问的实例详解 form表单中 登录名: 失去光标即触发事件 function createXmlHttp() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp = new XMLHttpRequest(); } catch (e) { try {// Internet Explorer xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (

  • C++利用MySQL API连接和操作数据库实例详解

    1.C++连接和操作MySQL的方式 系列文章: MySQL 设计和命令行模式下建立详解 C++利用MySQL API连接和操作数据库实例详解 在Windows平台,我们可以使用ADO.ODBC或者MySQL API进行连接和操作.ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的一个用于存取数据源的COM组件.它提供了程序语言和统一数据访问方式OLE DB的一个中间层,也就是Microsoft提出的应用程序接口(API)用以实现访问关系或非关

  • JAVA 多线程爬虫实例详解

    JAVA 多线程爬虫实例详解 前言 以前喜欢Python的爬虫是出于他的简洁,但到了后期需要更快,更大规模的爬虫的时候,我才渐渐意识到Java的强大.Java有一个很好的机制,就是多线程.而且Java的代码效率执行起来要比python快很多.这份博客主要用于记录我对多线程爬虫的实践理解. 线程 线程是指一个任务从头至尾的执行流.线程提供了运行一个任务的机制.对于Java而言,可以在一个程序中并发地启动多个线程.这些线程可以在多处理器系统上同时运行. runnable接口 任务类必须实现runna

  • java 单例模式的实例详解

    java 单例模式的实例详解 概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例.饿汉式单例.登记式单例三种. 单例模式有一下特点: 1.单例类只能有一个实例. 2.单例类必须自己自己创建自己的唯一实例. 3.单例类必须给所有其他对象提供这一实例. 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例.在计算机系统中,线程池.缓存.日志对象.对话框.打印机.显卡的驱动程序对象常被设计成单例.这些应用都或多或少具有资源管理器的功能.每台计算机可以有若干个打

  • Java多线程ForkJoinPool实例详解

    引言 java 7提供了另外一个很有用的线程池框架,Fork/Join框架 理论 Fork/Join框架主要有以下两个类组成. * ForkJoinPool 这个类实现了ExecutorService接口和工作窃取算法(Work-Stealing Algorithm).它管理工作者线程,并提供任务的状态信息,以及任务的执行信息 * ForkJoinTask 这个类是一个将在ForkJoinPool执行的任务的基类. Fork/Join框架提供了在一个任务里执行fork()和join()操作的机制

  • java 抽象类的实例详解

    java 抽象类的实例详解 前言: 什么是抽象类?这名字听着就挺抽象的,第一次听到这个名字还真有可能被唬住.但是,就像老人家所说的,一切反动派都是纸老虎,一切有着装x名字的概念也是纸老虎.好吧,我们已经从战略上做到了藐视它,现在就要战术上重视它,如同要解决纸老虎,就要一个牙齿一个牙齿地敲,一个爪子一个爪子地拔:解决这种抽象概念也一样,先要把它具体化,细分化,然后一个一个地来. 我一般遇到新的概念都会问三个问题: 1.这个东西有什么用?用来干什么的?它的意义在哪里?(显然,如果是没用的东西,就没必

随机推荐