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 { // 加载数据库驱动一次 ...
随机推荐
- 多张表进行关联查询---->删除某个数据的时候出现还有子记录的提示
多张表进行关联查询的时候,当某张表里面的一个字段在另外一张表有定义,就相当于一张表是另外一张表的子表:比如现在开发所遇到的一个问题: 这个是在删除sys_user表的里面的数据的时候出现的问题,因为s ...
- 网络传输层之TCP/UDP详解
一.运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层. 运输层的任务就是负责主机中两个进程之间的通信,其数据传输的单 ...
- python爬虫urllib库使用
urllib包括以下四个模块: 1.request:基本的HTTP请求模块,可以用来模拟发送请求.就像在浏览器里输入网址然后回车一样,只需要给库方法传入URL以及额外的参数,就可以模拟实现这个过程. ...
- pip安装本地文件
I do a lot of development without an internet connection1, so being able to install packages into a ...
- python 全栈开发:python基础
python具有优美.清晰.简单,是一个优秀并广泛使用的语言.诞生于1991年2.python历史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自 ...
- c++ 用 0x3f3f3f3f 设定最大int值的优点
在许多算法中都要用到一个常量来表示最大值,例如:寻找一个最小数,就要先设定一个值a,如果比a小,a就等于这个数:再如,最短路径中基本的松弛操作: 0 在c++中可以用memset() 来初始化数组成最 ...
- leetcode 4 - binary search
注意: 1)需要保证nums1 的长度比 nums2 的长度小:(否则vector指针会越界) 2) 当分割线(partition)在首或尾时,用INT_MIN 和 INT_MAX 代替. 思路: ...
- flask开发笔记
目录 虚拟环境 Debug模式 配置文件 url传入参数 url反转 重定义向 模板 创建 jinjia2语法 模板继承 flash 加载静态文件 MySQL数据库命令 配置 更新.提交.删除 模型操 ...
- [转] java获取hostIp和hostName
[From] https://www.cnblogs.com/huluyisheng/p/6867370.html InetAddress的构造函数不是公开的(public),所以需要通过它提供的静态 ...
- SpringBoot集成WebSocket【基于纯H5】进行点对点[一对一]和广播[一对多]实时推送
代码全部复制,仅供自己学习用 1.环境搭建 因为在上一篇基于STOMP协议实现的WebSocket里已经有大概介绍过Web的基本情况了,所以在这篇就不多说了,我们直接进入正题吧,在SpringBoot ...