今天初学数据库的一些简单创建数据库和表,并进行简单的查询,插入。

接下学习的就是java工程中怎么链接数据库呢。主要的方法和用到的类如下。

切记,mysql需要的jar包 mysql-connector-java-5.1.7-bin.jar

sqlserver需要的jar包 sqljdbc4.jar

oracle需要的jar包 ojdbc6.jar

注意:下面用到的类不是jar中的,而是java.sql中的类。

以下是三个常用数据库的连接实现

一、sqlserver

package com.direct.database;

import java.sql.Connection;
import java.sql.DriverManager;
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 TestPreparedStatement {
public static List< Student> list = new ArrayList<Student>();//存学生对象的集合
public int a;
public void flag(){
a = 10;
System.out.println(a);
//驱动类
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//url地址
String url = "jdbc:sqlserver://localhost:1433;databaseName=test";
String userName = "sa";
String password = "123456";
Connection conn = null;//用于应用程序和数据的连接
Statement stmt = null;//已经创建连接的基础上,向数据库发送SQL语句
ResultSet rs = null;//暂时存放数据库查询操作所获得的结果 try {
//加载驱动类
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
//得到一个连接
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=test", "sa","123456");//得到一个连接
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from Info");//执行SQL语句,并存在ResultSet对象中
while (rs.next()) {
//存对象到集合
Student student = new Student(rs.getString("id"), rs.getString("name"), rs.getString("sex"));
TestPreparedStatement.list.add(student); System.out.print(rs.getString("id")); //读取数据
System.out.print(rs.getString("name"));
System.out.print(rs.getString("sex"));
System.out.println();
} // 创建PreparedStatement对象
//PreparedStatement pstmt = conn.prepareStatement("insert into Info values(?, ? ,?)");//添加
//删除
PreparedStatement pstmt1 = conn.prepareStatement("delete from Info where id = ? and name = ?");
//使用set方法设置参数
PreparedStatement pstmt2 = conn.prepareStatement("update Info set name=? where name ='star' ");
pstmt1.setInt(1, 4);
pstmt1.setString(2, "the");//根据id和name删除数据库的内容 /*pstmt.setInt(1, 1);
pstmt.setString(2, "star");
pstmt.setString(3, "nan");//添加数值对到数据库
*/
pstmt2.setString(1, "super");//更新数据
pstmt2.executeUpdate();
//pstmt.executeUpdate();
pstmt1.executeUpdate();//执行PreparedStatement语句
} catch (SQLException e) {
e.printStackTrace();
}finally{
//关闭连接
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
System.out.println("----------------");
for (int i = 0; i < TestPreparedStatement.list.size(); i++) {
System.out.println(TestPreparedStatement.list.get(i));
}
} public static void main(String[] args) {
new TestPreparedStatement().flag(); }
}

 

二、mysql方式一

package com.dkt.mysql.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class MysqlConnection {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Connection conn=null;
PreparedStatement prep = null;
Statement state = null;
ResultSet rs = null;
try {
String url = "jdbc:mysql://localhost:3306/mytest";
conn = DriverManager.getConnection(url, "root", "123456");
state = conn.createStatement();
prep = conn.prepareStatement("select * from useinfo");
rs = prep.executeQuery();
while (rs.next()) {
int id= rs.getInt("userId");
String name= rs.getString("userName");
String sex = rs.getString("userSex");
System.out.println("从mysql读取的数据:"+id+"---------"+name+"--------"+sex);
} } catch (SQLException e) {
e.printStackTrace();
}finally{ try {
if(rs==null) rs.close();
if(prep==null) prep.close();
if(state==null) state.close();
if(conn==null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
} } }
}

二、mysql方式二

使用jdbc.properties配置文件方式

className=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/mytest
userName=root
password=123456

  

package com.dkt.mysql.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties; /*
* 反射链接: 什么是反射?
* 我们在程序运行时得到一个字符串,这个字符串是某个类名称,
* 如果要实例化这个类,就需要用到反射。
* 在工程下的src中创建file文件,命名为 jdbc.properties(配置文件)
* 里面存放是键值对的形式。
* 在java 程序中以文件输入流的形式加载进来
*
* 加载驱动 Class.forName();
* oracle: oracle.jdbc.driver.OracleDriver
* mysql: com.mysql.jdbc.Driver
*
* 链接数据库 DriverManager.getConnection(url,user,password);
* mysql:url如下
* jdbc:mysql://localhost:3306/databaseName?userUnicode=true&characterEncoding=utf-8
* "jdbc:mysql://localhost:3306/mytest"
*/
public class Uconn {
public static void main(String[] args) {
new Uconn().conn();
} public void conn(){ Connection conn=null;
PreparedStatement ps = null;
ResultSet rs = null;
//从配置文件中获得加载驱动信息
InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties");
Properties proper = new Properties();
try {
proper.load(in);
String className = proper.getProperty("className");
String url = proper.getProperty("url");
String userName= proper.getProperty("userName");
String password = proper.getProperty("password"); Driver driver = (Driver) Class.forName(className).newInstance();
System.out.println(driver); String sql = " select * from useInfo where userName='娜娜' ";//sql语句,查询useInfo表的数据
conn = DriverManager.getConnection(url, userName, password);
ps = conn.prepareStatement(sql);// 进行sql语句的预编译,防止sql注入
rs = ps.executeQuery();
System.out.println(rs.next());
while (rs.next()) {
int id= rs.getInt("userId");
String name= rs.getString("userName");
String sex = rs.getString("userSex");
System.out.println("从mysql读取的数据:"+id+"---------"+name+"--------"+sex);
} } catch (Exception e) {
e.printStackTrace();
} finally{
try {
if(rs==null) rs.close();
if(ps==null) ps.close();
if(conn==null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

三、oracle

package com.dkt.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class JdbcOracle {
public static void main(String[] args) {
JdbcOracle oracle = new JdbcOracle();
oracle.testOracle();
} /**
* 一个非常标准的连接Oracle数据库的示例代码
*/
public void testOracle(){
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
System.out.println("开始尝试连接数据库!");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
String user = "scott";// 用户名,系统默认的账户名
String password = "tiger";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("连接成功!");
String sql = "select * from scott.emp where ename=?";// 预编译语句,“?”代表参数
pre = con.prepareStatement(sql);// 实例化预编译语句
pre.setString(1, "KING");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
while (result.next()){
// 当结果集不为空时
System.out.println("编号:" + result.getInt("empno") + ",姓名:"
+ result.getString("ename")+",工资:"+result.getInt("sal"));
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
}
catch (Exception e)
{
e.printStackTrace();
}
}
} }

  

java JDBC链接sqlserver/mysql/oracle的更多相关文章

  1. jdbc连接sqlserver,mysql,oracle

    class xxx{ private static String port = "1433"; private static String ip = "192.168.2 ...

  2. Java JDBC链接Oracle数据库

    package com.test.test; import java.io.FileInputStream;import java.io.FileNotFoundException;import ja ...

  3. Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决

    Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...

  4. C#操作SqlServer MySql Oracle通用帮助类Db_Helper_DG(默认支持数据库读写分离、查询结果实体映射ORM)

    [前言] 作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系型数据库,在使用了多年的Sql_Helper_DG后,由于项目需 ...

  5. C#操作SqlServer MySql Oracle通用帮助类

    C#操作SqlServer MySql Oracle通用帮助类 [前言] 作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系 ...

  6. 关于在Java中链接SQLServer数据库中失败的原因分析

    首先声明:笔者是Java的初学者,并且一值是走在自学的道路上,长久以来只有“度娘”相伴.(加入了各种Java学习群,基本没有热心帮人解决问题的.可以理解-_-!!!)大神级的人物就不必看拙文了,没有什 ...

  7. Java jdbc链接 mySQL 写的crud

    1.JDBC(Java Data Base Connectivity java数据库连接)概念: 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编 ...

  8. Java jdbc访问sqlserver,oracle数据库

    1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...

  9. Java jdbc访问sqlserver,oracle数据库 DEMO

    1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...

随机推荐

  1. JAVA 集合随笔

    JAVA中提供了现成操纵数据的集合,使得我们在开发中基本不用自己动手实现复杂的数据结构,来保存和操纵数据. 所以当我们有了基本的数据结构知识,会合理利用JAVA提供的集合就好啦. JDK1.8;(仅列 ...

  2. ubuntu16.04 能启动mysql服务

    ubuntu16.04 后, 貌似mysqld在/etc/init.d下,直接执行会报mysqld不在服务中,因此开启mysql服务失败. 所以执行以下命令不能启动mysql服务: /etc/init ...

  3. Kettle配合Windows执行计划实现定时实行作业

    一般作业做好后需要做成定时任务,Kettle可以借助Windows的执行计划来完成.那么可以通过写批处理的方式让执行计划来调用. 其中Kitchen和Pan都可以做定时执行,一个是针对作业,一个是针对 ...

  4. Angular material mat-icon 资源参考_Action

    ul,li>ol { margin-bottom: 0 } dt { font-weight: 700 } dd { margin: 0 1.5em 1.5em } img { height: ...

  5. POJ_2886 Who Gets the Most Candies? 【二分+树状数组】

    一.题目 POJ2886 二.分析 这个题目吧,开始没读懂,做的时候也没懂,WA的时候懂了.假设是第p个出圈的人有一个对应的因子个数$F(p)$,那么,题目求的就是这个$F(p)$最大的对应的人. 1 ...

  6. odoo 的一些orm 操作

    1.基础文件及目录结构 在认识odoo ORM框架前,先介绍一下odoo中模块目录结构.     data:存放模块预制数据 i18n:存放国际化文件 models:存放模型等py代码 securit ...

  7. Spark & Python

    技术文章 https://www.cnblogs.com/yangzhang-home/p/6056133.html 基于Python Spark的推荐系统 https://blog.csdn.net ...

  8. jumserver 官方文档和

      一步一步安装(CentOS) 本文档旨在帮助用户了解各组件之间的关系, 生产环境部署建议参考 进阶安装文档 安装过程中遇到问题可参考 安装过程中常见的问题 测试推荐环境 CPU: 64位双核处理器 ...

  9. UnxUtils让windows下的dos命令变为linux下的命令

    一.UnxUtils UnxUtils是一个可以支持在Windows下使用linux命令的工具,用习惯了linux之后,感觉Windows的dos命令实在是太难用了,发现了这个工具,非常的小,装了它之 ...

  10. sqlite、mysql 将时间戳转换成本地时间语句

    sqlite:SELECT datetime(createdTime, 'unixepoch', 'localtime'); mysql:SELECT FROM_UNIXTIME( 124948800 ...