java JDBC链接sqlserver/mysql/oracle
今天初学数据库的一些简单创建数据库和表,并进行简单的查询,插入。
接下学习的就是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的更多相关文章
- jdbc连接sqlserver,mysql,oracle
class xxx{ private static String port = "1433"; private static String ip = "192.168.2 ...
- Java JDBC链接Oracle数据库
package com.test.test; import java.io.FileInputStream;import java.io.FileNotFoundException;import ja ...
- Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决
Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...
- C#操作SqlServer MySql Oracle通用帮助类Db_Helper_DG(默认支持数据库读写分离、查询结果实体映射ORM)
[前言] 作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系型数据库,在使用了多年的Sql_Helper_DG后,由于项目需 ...
- C#操作SqlServer MySql Oracle通用帮助类
C#操作SqlServer MySql Oracle通用帮助类 [前言] 作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系 ...
- 关于在Java中链接SQLServer数据库中失败的原因分析
首先声明:笔者是Java的初学者,并且一值是走在自学的道路上,长久以来只有“度娘”相伴.(加入了各种Java学习群,基本没有热心帮人解决问题的.可以理解-_-!!!)大神级的人物就不必看拙文了,没有什 ...
- Java jdbc链接 mySQL 写的crud
1.JDBC(Java Data Base Connectivity java数据库连接)概念: 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编 ...
- Java jdbc访问sqlserver,oracle数据库
1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...
- Java jdbc访问sqlserver,oracle数据库 DEMO
1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...
随机推荐
- 判断H5页面环境是否在小程序的webview中
用小程序提供的wx.miniProgram.getEnv可以获取环境参数,但是它有个问题就是无法在非微信环境下判断.所以在使用wx.miniProgram.getEnv前得先判断是否在微信环境中. 解 ...
- 如何实现java的四则运算
很多语言底层对四则运算都有内部封装, 我们还是要重复造下轮子,不为别的, 就是为了面试可以多装一分 b, 假设你已经了解了什么是二进制, 什么是异或, 什么是移位运算, 什么是与, 这些不懂就别硬上( ...
- alpha-beta搜索算法
alpha-beta搜索(min-max搜索): 简称mfs,用来解决双方最优决策博弈问题. 核心思想:在搜索树中,下一层越小,对当前层越有利,由于取max,一旦下一层出现了比其他孩子结果更大的值,那 ...
- 3dsmax2016卸载/安装失败/如何彻底卸载清除干净3dsmax2016注册表和文件的方法
3dsmax2016提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dsmax2016失败提示3dsmax2016安装未完成,某些产品无法安装,也有时候想重新 ...
- (转)用mysql自带工具mysqlslap对数据库进行压力测试
http://aolens.blog.51cto.com/7021142/1901557-------用mysql自带工具mysqlslap对数据库进行压力测试 mysqlslap是mysql自带的工 ...
- Js框架设计之DomReady
一.在介绍DomReady之前,先了解下相关的知识 1.HTML是一种标记语言,告诉我们这页面里面有什么内容,但是行为交互则要通过DOM操作来实现,但是注意:不要把尖括号里面的内容看作是DOM! 2. ...
- selenium+Python(截图保存错误页面)
异常捕捉与错误截图 创建错误截图文件夹,目录结果如下: 用例不可能每一次运行都成功,肯定运行时候有不成功的时候,关键是我们捕捉到错误,并以把并错误截图保存,这将是一个非常棒的功能,也会给我们错误定位带 ...
- java中String,StringBuffer与StringBuilder的区别??
本文着重介绍下,应该在何时恰当的使用string,stringbuffer,stringbuilder. 1,执行速度 StringBuilder > StringBuffer > ...
- css3画半圆
border-radius制作半圆与制作圆形的方法是一样的,只是元素的宽度与圆角方位要配合一致,不同的宽度和高度比例,以及圆角方位,可以制作上半圆.下半圆.左半圆和右半圆效果.例如:.semicirc ...
- CCF 出现次数最多的数 201312-1
出现次数最多的数 问题描述 试题编号: 201312-1 试题名称: 出现次数最多的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个正整数,找出它们中出现次数最多的 ...