java-mysql(1)
用java写过不少单侧,用到的数据存储也是用xml或者直接文件,但是关于数据库这块很少用到,最近就学习了下java链接mysql数据库。
第一:创建一个测试用的数据库
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is
Server version: 5.1.--log (Debian) Copyright (c) , , Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database testdb;
Query OK, row affected (0.00 sec)
第二:创建一些测试用的用户,并给它所有权限
mysql> create user 'tester' identified by '';
Query OK, rows affected (0.03 sec)
mysql> use testdb;
Database changed
mysql> grant all on testdb.* to tester;
Query OK, rows affected (0.00 sec)
第三:往数据库里面插入一些数据:
DROP TABLE IF EXISTS Books, Authors, Testing, Images; CREATE TABLE IF NOT EXISTS Authors(Id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(25)) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS Books(Id INT PRIMARY KEY AUTO_INCREMENT,
AuthorId INT, Title VARCHAR(100),
FOREIGN KEY(AuthorId) REFERENCES Authors(Id) ON DELETE CASCADE)
ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS Testing(Id INT) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS Images(Id INT PRIMARY KEY AUTO_INCREMENT,
Data MEDIUMBLOB); INSERT INTO Authors(Id, Name) VALUES(1, 'Jack London');
INSERT INTO Authors(Id, Name) VALUES(2, 'Honore de Balzac');
INSERT INTO Authors(Id, Name) VALUES(3, 'Lion Feuchtwanger');
INSERT INTO Authors(Id, Name) VALUES(4, 'Emile Zola');
INSERT INTO Authors(Id, Name) VALUES(5, 'Truman Capote'); INSERT INTO Books(Id, AuthorId, Title) VALUES(1, 1, 'Call of the Wild');
INSERT INTO Books(Id, AuthorId, Title) VALUES(2, 1, 'Martin Eden');
INSERT INTO Books(Id, AuthorId, Title) VALUES(3, 2, 'Old Goriot');
INSERT INTO Books(Id, AuthorId, Title) VALUES(4, 2, 'Cousin Bette');
INSERT INTO Books(Id, AuthorId, Title) VALUES(5, 3, 'Jew Suess');
INSERT INTO Books(Id, AuthorId, Title) VALUES(6, 4, 'Nana');
INSERT INTO Books(Id, AuthorId, Title) VALUES(7, 4, 'The Belly of Paris');
往mysql里面插入数据,有好几个办法:
比如:
hudson@qa005:~/hbl/dbstudy
$ mysql -u root -p testdb <preparesql.sql
Ok,准备工作完成,然后开始用java来链接数据库:
下载一个mysql的jdbc jar文件,可以直接去oracle上下。
package core; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet; public class MethodReferencesTest { /**
* @param args
* @throws CloneNotSupportedException
*/ public static void main(String[] args) throws CloneNotSupportedException {
// TODO Auto-generated method stub
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
String sqlurl = "jdbc:mysql://172.20.23.75:3306/testdb";
String sqluser = "root";
String sqlpassword = "123456";
String testsql = "show tables";
try {
connection = DriverManager.getConnection(sqlurl, sqluser,
sqlpassword);
statement = connection.createStatement();
resultSet = statement.executeQuery(testsql);
if (resultSet.next()) {
System.out.println(resultSet.getString(1));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} } }
首先,我们需要一个mysql的url地址:
String sqlurl = "jdbc:mysql://172.20.23.75:3306/testdb";
这个地址包括了数据库的类型,ip地址,和端口,另外还有数据库名字.
然后建立一个数据库的链接,参数包括了url地址,用户名和密码
connection = DriverManager.getConnection(sqlurl, sqluser,
sqlpassword);
接着创建一个statement来向数据库发送sql 语句。
statement = connection.createStatement();
创建完毕之后我们通过statement来执行我们前面定义好的sql语句,并且会返回一个结果集
resultSet = statement.executeQuery(testsql);
然后我们对结果集进行处理.
因为结果集保存了一个指向当前数据行的游标,这个游标一开始是指向当前数据行第一列之前的。
if (resultSet.next()) {
System.out.println(resultSet.getString(1));
}
所以我们先通过next来判断一下数据有没有下一列,如果没有,说明返回数据数据为空,如果有的,我们就输出结果,这里的getString用来获取第几列的数据。
最后:
finally {
try {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
不管数据库链接是否成功,数据是否有,我们都要判断下数据连接是不是已经断开,并且在断开数据库链接之前判断对象是不是为null,否则会抛出空指针异常,
java-mysql(1)的更多相关文章
- Java Mysql连接池配置和案例分析--超时异常和处理
前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测 ...
- java mysql 日期类型
mysql(版本:5.1.50)的时间日期类型如下: datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59: ...
- 阿里云上安装mysql步骤/ 阿里云ECS搭建Java+mysql+tomcat环境
使用阿里云ECS挺长一段时间了.这两天碰巧朋友小白让我一步一步教他在ECS上搭建Java+mysql+tomcat环境,所以把在这里把步骤在这简单整理了一下,以便需要的人查阅. 我购买的阿里云服务器系 ...
- Java mysql 日期相关
获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowString { ...
- java mysql模板
Java mysql的模版,很优雅.同时也兼顾了性能PreparedStatement和安全性(防SQL注入)两方面.对于比较简单的数据库操作基本满足要求. package dao; import j ...
- C# 制作Java +Mysql+Tomcat 环境安装程序,一键式安装
原文:C# 制作Java +Mysql+Tomcat 环境安装程序,一键式安装 要求: JDK.Mysql.Tomcat三者制作成一个安装包, 不能单独安装,安装过程不显示三者的界面, 安装完成要配置 ...
- java mysql 数据类型对照
java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang. ...
- 在linux环境下搭建JDK+JAVA+Mysql,并完成jforum的安装
参考链接: YUM安装MySQL和JDK和Tomcat:http://cmdschool.blog.51cto.com/2420395/1696206/ http://www.cnblogs.com/ ...
- Java MySQL数据类型对照
Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 varchar L+N VARCHAR java.lang.S ...
- Java-Runoob-高级教程:Java MySQL 连接
ylbtech-Java-Runoob-高级教程:Java MySQL 连接 1.返回顶部 1. Java MySQL 连接 本章节我们为大家介绍 Java 如何使用 使用 JDBC 连接 MySQL ...
随机推荐
- 编程算法 - 二叉搜索树(binary search tree) 代码(C)
二叉搜索树(binary search tree) 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 二叉搜索树(binary search tree)能 ...
- gdal的矢量栅格化接口GDALRasterizeLayers使用(一)
作者:朱金灿 来源:http://blog.csdn.net/clever101 gdal库提供了一个矢量栅格化接口函数GDALRasterizeLayers.今天让我们学习一下这个接口函数的使用.该 ...
- Creating Apps With Material Design —— Defining Custom Animations
转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android,时间仓促,有翻译问题请留言指出.谢谢 定义动画 在材料设计动画让用户与您的应用程序 ...
- 在WPF窗体中重绘
原文:在WPF窗体中重绘 写这篇主要是为了验证任何元素自身都具备绘图功能. 在默认Window中重写OnRender方法 protected override void OnRender(Draw ...
- 3 Task中的一些枚举 创建时候的、continue时候的
创建时常用的枚举: None.PreferFairness.LongRunning.AttacthedToParent.DenyChildAttach.HideScheduler AttacthedT ...
- C# WPF 低仿网易云音乐(PC)歌词控件
原文:C# WPF 低仿网易云音乐(PC)歌词控件 提醒:本篇博客记录了修改的过程,废话比较多,需要项目源码和看演示效果的直接拉到文章最底部~ 网易云音乐获取歌词的api地址 http://music ...
- Oracle 11g系统分区表中的新功能
在11g有一个新的特点是分区表系统.下面做一个实验: SQL> select * from v$version; BANNER --------------------------------- ...
- 用C++写UI库最本质的思想就是不用C++写UI(如何用 C++ 从零编写 GUI?内含多个开源UI作者的回复,非常精彩)
作者:Bingo链接:https://www.zhihu.com/question/24462113/answer/83371803来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- WPF 用Clip属性实现蒙板特效
原文:WPF 用Clip属性实现蒙板特效 上一篇,已简单介绍Clip属性的用法,这一篇用它来实现简单蒙板功能,很简单,直接上代码 <Window x:Class="擦除效果.MainW ...
- React学习(1)——constructor
constructor(props) { super(props); this.state = { orderNo: "001", wid: 6 }; } constructor: ...