一、搭建JDBC开发环境
企业应用程序经常要访问存储在数据库中的信息,因此JDK提供了一个标准接口JDBC(java database connection)来进行数据库访问操作。JDBC为多种数据库提供了统一的访问接口。
要利用JDBC访问数据库,必须首先在机器上安装一个数据库系统并将数据库的JDBC驱动程序添加到JavaEE应用服务器的Java编译路径之中。要使服务器上的Java EE应用能够通过JDBC访问数据库,必须将数据库的JDBC驱动程序添加到应用服务器的JVM可以访问到的目录下。
二、连接数据库
可以通过两个类来连接:1,DriverManager 2,Driver
给定具体的JDBC URL,获取数据库连接的方法是在DriverManager对象上调用getConnection()。
DriverManager.getConnection(url)
DriverManager.getConnection(url,user,password)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <% java.sql.Connection coon=null; java.lang.String str; try{ coon=java.sql.DriverManager.getConnection("jdbc:mysql://localhost/test","root","root"); %> 连接数据库成功 <% }catch(java.sql.SQLException e){ out.print(e.toString()); }finally{ if(coon!=null) coon.close(); } %>
三、执行SQL语句
与数据库进行连接后,就可通过执行SQL语句对数据库进行操作。
Statement stmt=coon.creatStatement();//语句对象
ResultSet rst=null;//结果集对象;
String sqlQuery="select * from customer";
rst=stmt.executeQuery(sqlQuery);
还有prepareStatment,CallableStatement
四、ResultSet
光标
BLOB字段处理
五、RowSet
六、连接池和数据源
下面是一个简单对话小程序:
package it.Client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String args[]) throws IOException { String reces = null; int len; Socket socket = null; OutputStream outputstream = null; InputStream inputstream = null; byte[] rece = new byte[1000]; try { ServerSocket serversocket = new ServerSocket(9527); // 服务器的套接字,端口为9527 while (true) { socket = serversocket.accept(); inputstream = socket.getInputStream();// 得到输入流 outputstream = socket.getOutputStream();// 得到输出流 len = inputstream.read(rece);// 接受客户端消息 if (len != 0) reces = new String(rece, 0, len); System.out.println(reces); BufferedReader bufferreader = new BufferedReader( new InputStreamReader(System.in)); outputstream.write(("服务器....."+bufferreader.readLine()).getBytes());// 返回给客户端的欢迎信息 } } catch (Exception e) { e.printStackTrace(); } finally { inputstream.close(); outputstream.close(); socket.close();// 记住一定要关闭这些输入,输出流和套接字 } } }
package it.Client;
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Client extends Thread { static String ServerIpAddress = "127.0.0.1";// 对方的IP static String words = "Hello";// 对方的话 static String temp = null; static InputStreamReader read = null; static ExecutorService pool = Executors.newFixedThreadPool(100); public static void main(String[] args) throws IOException { byte[] serverSay = new byte[1000];// 读取<1KB int len = 0; Socket s = null; OutputStream outputstream = null; InputStream inputstream = null; // 取得你给他的IP System.out.println("请输入对方的IP(默认发给自己):"); read = new InputStreamReader(System.in); try { temp = new BufferedReader(read).readLine(); if (!temp.equals("")) ServerIpAddress = temp; } catch (IOException e1) { } // 取得你各他的Message System.out.println("请输入想对他(她)说的话----输入QUIT 退出!!:"); read = new InputStreamReader(System.in); while (true) { System.out.println("*********"); BufferedReader bufferreader = new BufferedReader(new InputStreamReader(System.in)); words = bufferreader.readLine(); if (words.equals("quit")) { System.out.println("EXIT"); try { inputstream.close(); } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } try { outputstream.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { s.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }// 记住一定要关闭这些输入,输出流和套接字 System.exit(0); } temp = "客户端....." + words; s = new Socket(InetAddress.getByName(ServerIpAddress), 9527);// 套接字的IP地址和端口号 outputstream = s.getOutputStream(); inputstream = s.getInputStream(); outputstream.write(temp.getBytes());// 向服务器发送消息 len = inputstream.read(serverSay);// 接受服务器消息 System.out.println(new String(serverSay, 0, len));// 客户端控制台显示服务器返回的信息 } } }
alter table tablename add()/drop()
准备baf数据用__OD