java_JDBC连接数据库代码大全

合集下载

使用JavaBean连接数据库

使用JavaBean连接数据库

JSP+JavaBean1、JavaBean类1、显示学生信息内容JavaBeanpackage com.DataBase;import java.sql.*;public class MyDbBean{private Statement stmt = null;ResultSet rs = null;private Connection conn = null;private String dsn;//构造函数public MyDbBean() { }//根据dsn参数,加载驱动程序,建立连接public void getConn(String dbname, String uid, String pwd) throws Exceptiontry{dsn = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=" +dbname;Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();conn = DriverManager.getConnection(dsn, uid, pwd);}catch (Exception ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}//执行查询类的SQL语句,有返回集public ResultSet executeQuery1(String sql){rs = null;try{stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONL Y);rs = stmt.executeQuery(sql);}catch(SQLException ex){System.err.println("aq.executeQuery:"+ex.getMessage());}return rs;}//执行更新类的SQL语句,无返回集public void executeUpdate2(String sql){stmt = null;rs=null;try{stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONL Y);stmt.executeQuery(sql);stmt.close();conn.close();}catch(SQLException ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}//关闭对象public void closeStmt()try{ stmt.close(); }catch(SQLException ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}public void closeConn(){try{ conn.close(); }catch(SQLException ex){System.err.println("aq.executeQuery: " + ex.getMessage());}}}“list.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="testbean" scope="session" class="com.DataBase.MyDbBean" /><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>学籍管理系统</title></head><%! String url,sql; %><%! int i;%><body bgcolor="#ffffff"><div align="center"><font color="#000000" size="5">学籍管理系统</font> </div> <table width="75%" border="1" cellspacing="1" cellpadding="1" align="center"><tr><td width=16% align=center>学号</td><td width=16% align=center>姓名</td><td width=8% align=center>性别</td><td width=8% align=center>年龄</td><td width=16% align=center>籍贯</td><td width=12% align=center>更改</td><td width=12% align=center>删除</td></tr><%//调用getConn方法与数据库建立连接testbean.getConn("Data_Stu", "sa","");sql="select * from stuInfo";ResultSet rs=testbean.executeQuery1(sql);//查询数据库while(rs.next()){%><tr><td width=16% align=center><%=rs.getString(1)%></td><td width=16% align=center><%=rs.getString(2)%></td><td width=8% align=center><%=rs.getString(3)%></td><td width=8% align=center><%=rs.getInt(4)%></td><td width=16% align=center><%=rs.getString(5)%></td><td width=12% align=center><%=rs.getString(6)%></td><td width=12% align=center><a href="change.jsp?xuehao=<%=rs.getString(1)%>">修改</a></td> <td width=12% align=center><a href="del.jsp?xuehao=<%=rs.getString(1)%>">删除</a></td></tr><%}rs.close();testbean.closeStmt();testbean.closeConn();%></table><div align="center"><a href="insert.jsp">添加新记录</a> </div></body></html>2、添加记录“insert.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*;" errorPage=""%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>添加记录</title></head><body bgcolor="#FFFFFF" text="#000000"><div align="center"><font color="#000000" size="5">添加新记录</font></div><form name="form1" method="post" action="query.jsp"><table width="35%" border="1" cellspacing="1" cellpadding="1" align="center"> <tr><td width="46%" align="center">学号</td><td width="54%">&nbsp;&nbsp;&nbsp;<input type="text" name="xuehao" size="7"></td></tr><tr><td width="46%" align="center">姓名</td><td width="54%">&nbsp;&nbsp;&nbsp;<input type="text" name="name" size="8"></td></tr><tr><td width="46%" align="center">性别</td><td width="54%">&nbsp;&nbsp;&nbsp;<select name="sex" size="1"><option value="男" selected> 男</option><option value="女">女</option></select></td></tr><tr><td width="46%" align="center">年龄</td><td width="54%">&nbsp;&nbsp;&nbsp;<input type="text" name="age" size="2"></td></tr><tr><td width="46%" align="center">籍贯</td><td width="54%">&nbsp;&nbsp;&nbsp;<input type="text" name="jiguan" size="8"></td></tr><tr><td width="46%" align="center">院系</td><td width="54%">&nbsp;&nbsp;&nbsp;<input type="text" name="department" size="8"></tr><tr align="center"><td colspan="2" align="center"><input type="submit" name="Submit" value="提交">&nbsp;&nbsp;&nbsp;<input type="reset" name="reset" value="清空"></td></tr></table></form></body></html>“query.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="query" scope="session" class="com.DataBase.MyDbBean"/> <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>插入数据</title></head><body><%! String xuehao,name,sex,age,jiguan,department,url,sql; %><%! int i;%><%xuehao=request.getParameter("xuehao").trim();name=request.getParameter("name").trim();name=new String(name.getBytes("ISO-8859-1"),"UTF-8");//编码转换sex=request.getParameter("sex").trim();sex=new String(sex.getBytes("ISO-8859-1"),"UTF-8");age=request.getParameter("age").trim();i=Integer.parseInt(age);jiguan=request.getParameter("jiguan").trim();jiguan=new String(jiguan.getBytes("ISO-8859-1"),"UTF-8");department=request.getParameter("department").trim();department=new String(department.getBytes("ISO-8859-1"),"UTF-8");if(xuehao.length()!=7){//检查学号的位数response.sendRedirect("err.jsp");}response.sendRedirect("err.jsp");}//调用getConn()方法与数据库建立连接query.getConn("Data_Stu","sa","");sql="select * from stuInfo where 学号='"+xuehao+"'";ResultSet rs=query.executeQuery1(sql);if(rs.getRow()>0){ response.sendRedirect("err.jsp"); }sql="insert into stuInfo(学号,姓名,性别,年龄,籍贯,院系)";sql=sql+"values('"+xuehao+"','"+name+"','"+sex+"','"+i+"','"+jiguan+"','"+department+"')";query.executeUpdate2(sql);out.println("<font size=3 color=blue>正在处理信息,请稍后......</font><meta http-equiv='refresh' content='2;url=list.jsp'>");rs.close();query.closeStmt();query.closeConn();%></body></html>3、更改记录“change.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@ page import="java.sql.*,java.util.*;" errorPage=""%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="modify" scope="session" class="com.DataBase.MyDbBean"/><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>修改记录</title></head><body bgcolor="#FFFFFF" text="#000000"><div align="center"><font color="#000000" size="5">修改记录</font> </div><%! String xuehao,url,sql,sex; %><%xuehao=request.getParameter("xuehao").trim();//调用getConn()方法与数据库建立连接modify.getConn("Data_Stu","sa","");sql="select * from stuInfo where 学号='"+xuehao+"'";ResultSet rs=modify.executeQuery1(sql);while(rs.next()){%><form name="form1" method="post" action="change_query.jsp?xuehao=<%=xuehao%>"><table width="35%" border="1" cellspacing="1" cellpadding="1" align="center"><tr><td width="46%" align="center">学号</td><td width="54%"> &nbsp;&nbsp;&nbsp;<%=rs.getString(1)%></td></tr><tr><td width="46%" align="center">姓名</td><td width="54%"> &nbsp;&nbsp;&nbsp;<input type="text" name="name" size="8" value=<%=rs.getString(2)%>></td></tr><tr><td width="46%" align="center">性别</td><td width="54%">&nbsp;&nbsp;<%sex=rs.getString(3).trim();if(sex.equals("男")){%><option value="男" selected>男</option><option value="女">女</option></select><% }else{%><select name="sex" size="1"><option value="男" >男</option><option value="女"selected>女</option></select><% } %></td></tr><tr><td width="46%" align="center">年龄</td><td width="54%"> &nbsp;&nbsp;&nbsp;<input type="text" name="age" size="2" value=<%=rs.getInt(4)%>></td></tr><tr><td width="46%" align="center">籍贯</td><td width="54%">&nbsp;&nbsp;&nbsp;<input type="text" name="jiguan" size="8" value=<%=rs.getString(5)%>></td></tr><tr><td width="46%" align="center">院系</td><td width="54%"> &nbsp;&nbsp;&nbsp;<input type="text" name="department" size="8" value=<%=rs.getString(6)%>></td></tr><tr align="center"><td colspan="2" align="center"><input type="submit" name="Submit" value="提交">&nbsp;&nbsp;&nbsp;<input type="reset" name="reset" value="清空"></td></tr></table></form><%}rs.close();modify.closeStmt();modify.closeConn();%></body></html>“change_query.jsp”<%--Document : change_queryCreated on : 2010-5-8, 17:32:29Author : Administrator--%><%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="modify" scope="session" class="com.DataBase.MyDbBean"/><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>修改记录</title></head><body><%! String xuehao,name,sex,age,jiguan,department,url,sql; %><%! int i;%><%xuehao=request.getParameter("xuehao").trim();out.print(xuehao);name=request.getParameter("name").trim();name=new String(name.getBytes("ISO-8859-1"),"UTF-8");sex=request.getParameter("sex").trim();sex=new String(sex.getBytes("ISO-8859-1"),"UTF-8");age=request.getParameter("age").trim();i=Integer.parseInt(age);jiguan=request.getParameter("jiguan").trim();jiguan=new String(jiguan.getBytes("ISO-8859-1"),"UTF-8");department=request.getParameter("department").trim();department=new String(department.getBytes("ISO-8859-1"),"UTF-8");if(name.equals("")){response.sendRedirect("err1.jsp");}try{//调用getConn()方法与数据库建立连接modify.getConn("Data_Stu","sa","");sql="update stuInfo set 姓名= '"+name+"',性别= '"+sex+"',年龄="+i+",籍贯= '"+jiguan+"',院系=modify.executeUpdate2(sql);out.println("<font size=3 color=blue>正在修改记录,请稍后......</font><meta http-equiv='refresh' content='2;url=list.jsp'>");modify.closeStmt();modify.closeConn();}catch(Exception e){response.sendRedirect("err.jsp");}%></body></html>4、删除记录“del.jsp”<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*,java.util.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><jsp:useBean id="del" scope="session" class="com.DataBase.MyDbBean"/><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>删除记录</title></head><body><%! String xuehao,url,sql; %><%xuehao=request.getParameter("xuehao").trim();try{//调用getConn()方法与数据库建立连接del.getConn("Data_Stu","sa","");sql="delete from stuInfo where 学号='"+xuehao+"'";del.executeUpdate2(sql);out.println("<font size=3 color=blue>正在删除数据,请稍后......</font>" +"<meta http-equiv='refresh' content='2;url=list.jsp'>");del.closeStmt();del.closeConn();}catch(Exception e){response.sendRedirect("err.jsp");}%></body></html>JSP+ Servlet 访问数据库<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title></head><body><form name="form1" method="post" action="servlet"><p>客户查询</p><p>请输入用户名:<input type="text" name="USERNAME"><input type="submit" name="Submit" value="提交"></p><p>&nbsp;</p></form><form name="form2" method="get" action="servlet"><p>根据总数查询</p><p>总数范围在<input type="text" name="totalmin">和<input type="text" name="totalmax">之间</p><p><input type="submit" name="Submit2" value="提交"></p></form><p>&nbsp;</p></body></html>package tree;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;import java.sql.*;public class queryextends HttpServlet {private static final String CONTENT_TYPE = "text/html; charset=GB2312";//Initialize global variablespublic void init() throws ServletException {super.init();}//执行HTTP Post请求public void doPost(HttpServletRequest request,HttpServletResponse response) throwsServletException,IOException{PrintWriter out=response.getWriter();response.setContentType(CONTENT_TYPE);//设置响应的MIME类型。

Java中的JDBC常用的连接字符串

Java中的JDBC常用的连接字符串

Java中的JDBC常用的连接字符串1. Microsoft SQLServer()(SqlServer 2000)Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" );cn = DriverManager.getConnection( "jdbc:microsoft:sqlserver://localhost:1433;databaseName=pubs", sUs r, sPwd );(SqlServer 2005)Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver" );cn = DriverManager.getConnection( "jdbc:sqlserver://localhost:1433;databaseName=pubs", sUsr, sPwd );2. Oracle(/ip/deploy/database/oracle9i/)classes12.zipClass.forName( "oracle.jdbc.driver.OracleDriver" );cn = DriverManager.getConnection( "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd );3. MySQL()mm.mysql-2.0.2-bin.jarClass.forName( "org.gjt.mm.mysql.Driver" );cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd );4. PostgreSQL()pgjdbc2.jarClass.forName( "org.postgresql.Driver" );cn = DriverManager.getConnection( "jdbc:postgresql://MyDbComputerNameOrIP/myDatabaseName", sUsr, sPwd );5. Sybase()jconn2.jarClass.forName( "com.sybase.jdbc2.jdbc.SybDriver" );cn = DriverManager.getConnection( "jdbc:sybase:Tds:MyDbComputerNameOrIP:2638", sUsr, sPwd );//(Default-Username/Password: "dba"/"sql")6. Microsoft SQLServer()Class.forName( "net.sourceforge.jtds.jdbc.Driver" );cn = DriverManager.getConnection( "jdbc:jtds:sqlserver://MyDbComputerNameOrIP:1433/master", sUsr, sPwd );7. ODBCClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection cn = DriverManager.getConnection( "jdbc:odbc:" + sDsn, sUsr, sPwd );8.DB2(新添加)Class.forName(".DB2Driver");String url="jdbc:db2://192.9.200.108:6789/SAMPLE"cn = DriverManager.getConnection( url, sUsr, sPwd );9.Microsoft SQL Server series (6.5, 7.x and 2000) and Sybase 10JDBC Name: jTDSURL: /Version: 0.5.1Download URL: /project/showfiles.php?group_id=33291语法:Class.forName("net.sourceforge.jtds.jdbc.Driver ");Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://host:port/database","user","password"); orConnection con = DriverManager.getConnection("jdbc:jtds:sybase://host:port/database","user","password"); 10.PostgresqlJDBC Name: PostgreSQL JDBCURL: /Version: 7.3.3 build 110Download URL: /download.html语法:Class.forName("org.postgresql.Driver");Connection con=DriverManager.getConnection("jdbc:postgresql://host:port/database","user","password");11.IBM AS400主机在用的JDBC语法有装V4R4以上版本的Client Access Express可以在C:\Program Files\IBM\Client Access\jt400\lib找到 driver 档案 jt400.zip,并更改扩展名成为 jt400.jar语法:java.sql.DriverManager.registerDriver (new com.ibm.as400.access.AS400JDBCDriver ());Class.forName("com.ibm.as400.access.AS400JDBCConnection");con = DriverManager.getConnection("jdbc:as400://IP","user","password");rmixClass.forName("rmix.jdbc.IfxDriver").newInstance();String url ="jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;user=testuser;password=testpassword";Lib:jdbcdrv.zip<br><br>Class.forName( "com.sybase.jdbc.SybDriver" )url="jdbc:sybase:Tds:127.0.0.1:2638/asademo";SybConnection connection= (SybConnection)DriverManager.getConnection(url,"dba","sql");13.SAP DBClass.forName ("com.sap.dbtech.jdbc.DriverSapDB");java.sql.Connection connection = java.sql.DriverManager.getConnection ( "jdbc:sapdb://" + host + "/" + database_name, user_name, password)14.InterBaseString url = "jdbc:interbase://localhost/e:/testbed/database/employee.gdb";Class.forName("interbase.interclient.Driver");//Driver d = new interbase.interclient.Driver (); /* this will also work if you do not want the line above */Connection conn = DriverManager.getConnection( url, "sysdba", "masterkey" );15.HSqlDBurl: /driver: org.hsqldb.jdbcDriver连接方式有4种,分别为:con-str(内存): jdbc:hsqldb.con-str(本地): jdbc:hsqldb:/path/to/the/db/dircon-str(http): jdbc:hsqldb:http://dbsrvcon-str(hsql): jdbc:hsqldb:hsql://dbsrv。

Java操作Sqlite数据库-jdbc连接

Java操作Sqlite数据库-jdbc连接

Java操作Sqlite数据库-jdbc连接Java操作Sqlite数据库步骤:1. 导⼊Sqlite jdbc2. 编写jdbc连接代码public class OpSqliteDB {private static final String Class_Name = "org.sqlite.JDBC";private static final String DB_URL = "jdbc:sqlite:F:\\xxxdatabase.db";public static void main(String args[]) {// load the sqlite-JDBC driver using the current class loaderConnection connection = null;try {connection = createConnection();func1(connection);System.out.println("Success!");} catch (SQLException e) {System.err.println(e.getMessage());} catch(Exception e) {e.printStackTrace();} finally{try {if (connection != null)connection.close();} catch (SQLException e) {// connection close failed.System.err.println(e);}}}// 创建Sqlite数据库连接public static Connection createConnection() throws SQLException, ClassNotFoundException {Class.forName(Class_Name);return DriverManager.getConnection(DB_URL);}public static void func1(Connection connection) throws SQLException {Statement statement = connection.createStatement();Statement statement1 = connection.createStatement();statement.setQueryTimeout(30); // set timeout to 30 sec.// 执⾏查询语句ResultSet rs = statement.executeQuery("select * from table_name1");while (rs.next()) {String col1 = rs.getString("col1_name");String col2 = rs.getString("col2_name");System.out.println("col1 = " + col1 + " col2 = " + col2);System.out.println(location);// 执⾏插⼊语句操作statement1.executeUpdate("insert into table_name2(col2) values('" + col2_value + "')");// 执⾏更新语句statement1.executeUpdate("update table_name2 set 字段名1=" + 字段值1 + " where 字段名2='" + 字段值2 + "'"); }}查询语句:select*from表名where条件⼦句group by分组字句having ... order by排序⼦句如:select*from personselect*from person order by id descselect name from person group by name having count(*)>1分页SQL与mysql类似,下⾯SQL语句获取5条记录,跳过前⾯3条记录select*from Account limit 5 offset 3或者select*from Account limit 3,5插⼊语句:insert into表名(字段列表) values(值列表)如:insert into person(name, age) values(‘传智’,3)更新语句:update表名set字段名=值where条件⼦句如:update person set name=‘传智‘ where id=10删除语句:delete from表名where条件⼦句如:delete from person where id=10。

JavaIDEA配置JDBC连接SQLServer数据库和代码提示

JavaIDEA配置JDBC连接SQLServer数据库和代码提示

JavaIDEA配置JDBC连接SQLServer数据库和代码提⽰⽬录Java IDEA配置JDBC连接SQL Server数据库和代码提⽰初学数据库和Java,记录⼀下配置Java连接SQL Server的过程。

启⽤SQL Server的TCP/IP协议连接到「开始菜单->Microsoft SQL Server->SQL Server 2019 配置管理器」,选择「SQL⽹络配置 -> <实例名字>的协议」,启⽤所有协议。

再回到「SQL Server服务」,右键SQL Server选择重启。

SQL Server的默认TCP端⼝号为1433,因此我们可以打开CMD测试⼀下。

在CMD中输⼊执⾏telnet localhost 1433,如果⽆法连接说明配置有误,可以去配置管理器⾥双击TCP/IP,拉到最下⾯,查看⼀下端⼝号。

如果跳转到了Telnet窗⼝(右边那样,只有⼀个光标在闪),就是成功了。

下载JDBC驱动JDBC驱动版本选择如果是SQL Server 2012及以上,可以跳过这⼀步。

到「」查询与你的数据库兼容的JDBC版本号。

微软官⽹下载如果是SQL Server 2012及以上,直接到「」下载。

否则,到「」下载与你的数据库兼容的JDBC版本。

下载后解压,⽬录结构应如「<安装⽬录>\sqljdbc_<版本>\<语⾔>\<具体⽂件>」,内含若⼲个.jar⽂件,对应了不同版本的JDK⽀持。

由于.jar向下兼容,因此JDK 16⽤JDK 1.8的包也没问题。

release.txt⽂件中也写出了各jar的⽀持列表:但是注意,如果JDK 15⽤了JDK 16的JAR包,因为Major Version⽐16的⼩,会出现版本不兼容的异常:Exception in thread "main" ng.UnsupportedClassVersionError: com/microsoft/sqlserver/jdbc/SQLServerDriver has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 59.0JetBrains⾃带下载⾸先进Settings->Plugins,确保已经安装和启⽤了Database Tools and SQL插件,⼀般IDEA⾃带,不需要另⾏下载。

javaEE实验报告1---JDBC操作数据库

javaEE实验报告1---JDBC操作数据库
//关闭资源
if(rs!=null){
rs.close();
}
if(ps!=null){
try{
ps.close();
}catch(SQLException e) {
//TODOAuto-generated catch block
e.printStackTrace();
}
}
if(ct!=null){
ps=ct.prepareStatement("insert into TUserLogin values(?,?,?,?,?)");
ps.setString(1,"12");
ps.setString(2,"mary");
ps.setString(3,"123456");
ps.setString(4,"3");
年级:12
实验日期:2014-3-19
姓名:陈小斌
学号:03
班级:2班
实验名称:JDBC操作数据库
实验序号:实验一
成员人数:1
一、实验目的及要求
实验目的:
1、学习JDBC操作数据库的编程方法;
2、了解MyEclipse导入数据库驱动包的方法;
3、掌握Microsoft SQL Server 2008数据库的建立方法;
insert into TUserLogin values(3,'wl3','123456',1,'wl3@')
insert into TUserLogin values(4,'wl4','123456',1,'wl4@')

jdbc+代码oracle数据库连接,JDBC连接Oracle数据库代码

jdbc+代码oracle数据库连接,JDBC连接Oracle数据库代码

jdbc+代码oracle数据库连接,JDBC连接Oracle数据库代码import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class TestOracle {public static void main(String[] args) {Connection conn = null;Statement stmt = null;ResultSet rs = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");//实例化oracle数据库驱动程序(建⽴中间件)String url = "jdbc:oracle:thin:@localhost:1521:oar92";//@localhost为服务器名,sjzwish为数据库实例名conn = DriverManager.getConnection(url, "guchao", "jimmy");//连接数据库,a代表帐户,a代表密码stmt = conn.createStatement();//提交sql语句,创建⼀个Statement对象来将SQL语句发送到数据库//查询数据⽤executeQueryrs = stmt.executeQuery("select * from ruby");//执⾏查询,(ruby)为表名while (rs.next()) {//使当前记录指针定位到记录集的第⼀条记录System.out.println(rs.getString("sid") +" "+ rs.getString("sname"));}//1代表当前记录的第⼀个字段的值,可以写成字段名。

Java_JDBC连接数据库_使用读取配置文件的方式

Java_JDBC连接数据库_使用读取配置文件的方式

Java_JDBC连接数据库_使⽤读取配置⽂件的⽅式 1package com.homewoek3_4.dao;23import java.io.IOException;4import java.io.InputStream;5import java.sql.Connection;6import java.sql.DriverManager;7import java.sql.PreparedStatement;8import java.sql.ResultSet;9import java.sql.SQLException;10import java.util.Properties;1112/**13 * 数据库连接通⽤类14 * @author Administrator15*/16public abstract class BaseDao {17private static final String path = "database.properties";18private static String DB_DRIVER;19private static String DB_URL;20private static String DB_USER;21private static String DB_PWD;2223protected Connection conn = null;24protected PreparedStatement ps = null;25protected ResultSet rs = null;2627static {28 Properties pro = new Properties();29 InputStream io = BaseDao.class.getClassLoader().getResourceAsStream(path);30try {31//读取配置⽂件32 pro.load(io);33 } catch (IOException e) {34 e.printStackTrace();35 }36 DB_DRIVER = pro.getProperty("DB_DRIVER");37 DB_URL = pro.getProperty("DB_URL");38 DB_USER = pro.getProperty("DB_USER");39 DB_PWD = pro.getProperty("DB_PWD");40try {41//加载驱动类42 Class.forName(DB_DRIVER);43 } catch (ClassNotFoundException e) {44 e.printStackTrace();45 }46 }47/**48 * 打开数据库连接49*/50protected void openConn() {51try {52 conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PWD);53 } catch (SQLException e) {54 e.printStackTrace();55 }56 }57/**58 * 关闭数据库连接59*/60protected void closeConn() {61try {62if (rs != null) {63 rs.close();64 }65if (ps != null) {66 ps.close();67 }68if (conn != null) {69 conn.close();70 }71 } catch (SQLException e) {72 e.printStackTrace();73 }74 }75/**76 * 增删改77 * @param sql78 * @param obj79 * @return80*/81protected int executeUpdate(String sql, Object...obj) {82int result = -1;83this.openConn();84try {85 ps = conn.prepareStatement(sql);86if (obj != null) {87for (int i = 0; i < obj.length; i++) {88 ps.setObject(i+1, obj[i]);89 }90 }91 result = ps.executeUpdate();92 } catch (SQLException e) {93 e.printStackTrace();94 }95return result;96 }97/**98 * 查询99 * @param sql100 * @param obj101 * @return102*/103protected void executeQuery(String sql, Object...obj) {104this.openConn();105try {106 ps = conn.prepareStatement(sql);107if (obj != null) {108for (int i = 0; i < obj.length; i++) {109 ps.setObject(i+1, obj[i]);110 }111 }112 rs = ps.executeQuery();113 } catch (SQLException e) {114 e.printStackTrace();115 }116 }117 }创建database.properties⽂件,注意:后缀名⼀定是properties。

Java通过JDBC连接SQLServer2017数据库

Java通过JDBC连接SQLServer2017数据库

Java 通过JDBC 连接SQLServer2017数据库⼀、需要明⽩的基础知识数据库名驱动jar(x 表⽰版本号)具体驱动类连接字符串(ip 地址,端⼝号,名字)Oracle ojdbc-x.jaroracle.jdbc.oracleDriver jdbc:oracle:thin:@localhost:1521:ORCL MySQL mysql-connetor-java-x.jar com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/数据库实例名SQLSERVER sqljdbc-x.jar com.mircosoft.sqlserver.jdbc.SQLServerDriver jdbc:mircosoft:sqlserver:localhost:1433;databasename=数据库实例名⼆、操作导⼊jar 包下载Microsoft JDBC Driver 4.0 for SQL Server在这⾥下载:/zh-cn/download/details.aspx?id=11774java1.8对于版本为sqljdbc42在D 盘新建⼀个⽂件夹,命名为sqljdbc42,将sqljdbc42.jar 复制⼀个进去。

右击 我的电脑 → 属性 → ⾼级系统设置(⾼级) → 环境变量,双击CLASSPATH 变量(或选中CLASSPATH 后 → 编辑),在最后⾯追加 “;D:\sqljdbc42 \sqljdbc42.jar” (注意最前⾯有个 ; )若不存在CLASSPATH ,就新建CLASSPATH 变量,并且将其值设为“D:\sqljdbc42 \sqljdbc42.jar”如果是使⽤Tomcat 做服务器,那么我们需要将sqljdbc42.jar 类库⽂件拷贝到C:\apache-tomcat-***(版本号)\lib ⽬录下除此之外还需要将sqljdbc42.jar 类库⽂件拷贝到C:\Program Files (X86)\Java\jre8\lib\ext ⽬录下然后在ecilipse ⾥新建java 项⽬,在src ⽬录右键“BuildPath”,如图添加解压在D 盘的sqljabc.jar ⽂件然后新建class 运⾏即可三、测试连接运⾏⽰例代码:1 package Test;23 import java.sql.*;45 public class Test {67public static void main(String[] args) {8 update();910 }111213public static void update() {14 Connection connection=null;15 String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//SQL数据库引擎16 String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=tjl";//数据源注意若出现加载或者连接数据库失败⼀般是这⾥出现问题17 String Name="sa";18 String Pwd="19990713";19try{20 Class.forName(driverName);21 connection=DriverManager.getConnection(dbURL,Name,Pwd);22 System.out.println("连接数据库成功");23 }catch(Exception e){24 e.printStackTrace();25 System.out.println("连接失败");26 }27 Statement stmt = null;28try {29 stmt = connection.createStatement();30 } catch (SQLException e) {31// TODO Auto-generated catch block32 e.printStackTrace();33 }34//增删改操作35 String sql_1="insert into student values('990403','佩奇','男','12','1','2101')";36int count_1 = 0;37try {38 count_1 = stmt.executeUpdate(sql_1);39 } catch (SQLException e) {40// TODO Auto-generated catch block41 e.printStackTrace();42 }//返回值表⽰增删改⼏条数据43//处理结果44if(count_1>0){45 System.out.println("更新成功!");46 }47//查询操作48 String sql_2="select * from student";4950//关闭51try {52 stmt.close();53 } catch (SQLException e) {54// TODO Auto-generated catch block55 e.printStackTrace();56 }57try {58 connection.close();59 } catch (SQLException e) {60// TODO Auto-generated catch block61 e.printStackTrace();62 }63 }64 }65测试结果。

java连接数据库语句

java连接数据库语句

java连接数据库语句在Java中,可以使用JDBC(Java Database Connectivity)来连接和操作数据库。

下面是连接数据库的常见语句示例:1. 加载数据库驱动:```javaClass.forName("com.mysql.jdbc.Driver");```2. 建立数据库连接:```javaString url = "jdbc:mysql://localhost:3306/mydatabase";String username = "root";String password = "password";Connection connection = DriverManager.getConnection(url, username, password);```其中,url是数据库的地址,username和password是登录数据库的用户名和密码。

3. 执行SQL查询或更新:```javaStatement statement = connection.createStatement();String sql = "SELECT * FROM mytable";ResultSet resultSet = statement.executeQuery(sql);``````javaString sql = "INSERT INTO mytable (column1, column2) VALUES ('value1', 'value2')";int rowsAffected = statement.executeUpdate(sql);```4. 处理结果集:```javawhile (resultSet.next()) {String column1 = resultSet.getString("column1");String column2 = resultSet.getString("column2");// 处理每一行数据}```5. 关闭数据库连接:```javaresultSet.close();statement.close();connection.close();```以上是连接和操作数据库的基本语句示例,具体的语句会根据使用的数据库类型、需要执行的SQL语句和具体业务需求进行调整。

JAVA使用JDBC连接数据库的几种方式

JAVA使用JDBC连接数据库的几种方式

JAVA使用JDBC连接数据库的几种方式JDBC(Java Database Connectivity)是Java编程语言用于连接数据库的一种标准API。

它提供了一种访问和操作不同类型数据库的方法。

在JDBC中,有几种不同的方式可以连接数据库。

下面是常见的几种方式以及它们的详细介绍。

1.使用JDBC驱动程序连接数据库2. DriverManager类连接数据库DriverManager是一个Java类,用于管理JDBC驱动程序。

它提供了一种简单的方法来注册和获取特定驱动程序的连接。

使用DriverManager 连接数据库时,首先需要加载驱动程序,并使用驱动程序的URL、用户名和密码创建连接。

然后可以使用这个连接执行SQL查询和更新操作。

3. DataSource接口连接数据库DataSource是一个接口,用于从数据库连接池获取连接。

连接池是一组预先创建的数据库连接,可以重复使用,从而提高应用程序的性能。

通过使用DataSource接口,可以通过配置连接池的方式来连接和管理数据库连接。

这种方式通常适用于大型应用程序或需要高并发连接的场景。

4. 使用JNDI(Java Naming and Directory Interface)连接数据库JNDI是Java提供的一种用于在Java应用程序中查找和访问命名服务的API。

通过使用JNDI,可以在应用程序中配置数据库连接信息,并使用统一的方式访问数据库。

这种方式通常适用于企业级应用程序,其中数据库连接信息可以统一管理。

5.使用第三方库连接数据库除了使用JDBC标准API连接数据库,还可以使用一些第三方库来简化数据库访问。

例如,Hibernate是一个流行的Java持久化框架,它提供了一种简单的方式来与数据库进行交互。

使用Hibernate,可以通过简单的配置来连接和管理数据库。

总结:上述是几种使用JDBC连接数据库的方式。

每种方式都有自己的优势和适用场景。

java连接mysql数据库(JDBC驱动)

java连接mysql数据库(JDBC驱动)

Java连接mysql数据库一.软件下载Mysql下载版本:4.1.11/downloads/mysql/4.1.htmlJDBC驱动下载版本:3.1.8/downloads/connector/j/3.1.htmlMysql界面插件:mysql-front下载版本镜像:HongKong(我下回来安装就是中文版了)http://www.mysqlfront.de/download.html二.软件安装打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup.exe”,出现如下界面:mysql安装向导启动,按“Next”继续选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom (用户自定义)”三个选项,我们选择“Custom”,有更多的选项,也方便熟悉安装过程在“Developer Components(开发者部分)”上左键单击,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。

在上面的“MySQL Server (mysql服务器)”、“Client Programs(mysql客户端程序)”、“Documentation (文档)”也如此操作,以保证安装所有文件。

点选“Change...”,手动指定安装目录。

填上安装目录,我的是“F:\Server\MySQL\MySQL Server 5.0”,也建议不要放在与操作系统同一分区,这样可以防止系统备份还原的时候,数据被清空。

按“OK”继续。

返回刚才的界面,按“Next”继续。

确认一下先前的设置,如果有误,按“Back”返回重做。

按“Install”开始安装。

正在安装中,请稍候,直到出现下面的界面这里是询问你是否要注册一个的账号,或是使用已有的账号登陆,一般不需要了,点选“Skip Sign-Up”,按“Next”略过此步骤。

jdbc数据库连接的基本参数

jdbc数据库连接的基本参数

jdbc数据库连接的基本参数JDBC(Java Database Connectivity)是一种用于Java编程语言的API,用于管理与关系型数据库之间的连接和操作。

通过JDBC,开发者可以直接与数据库进行通信,执行SQL语句和存储过程,以及处理查询结果。

在使用JDBC连接数据库时,需要关注一些基本的参数,包括:URL、用户名、密码、驱动程序名称。

1. URL(URL)URL是一个字符串,用于指定数据库的位置和其他连接相关的属性。

URL的具体格式可以根据不同的数据库类型而有所区别。

例如,对于MySQL数据库,URL的格式如下:jdbc:mysql://hostname:port/database_name其中,"hostname"是数据库服务器的主机名或IP地址,"port"是数据库服务器监听的端口号,"database_name"是要连接的数据库的名称。

2.用户名(User)用户名是用于在数据库服务器上进行身份验证的凭证。

在使用JDBC连接数据库时,必须提供有效的用户名才能成功连接。

3.密码(Password)密码是与用户名关联的机密信息,用于进行身份验证。

在连接数据库时,需要提供与用户名匹配的密码。

4.驱动程序(Driver)驱动程序是用于与特定数据库进行通信的软件组件。

不同类型的数据库通常需要不同的驱动程序。

例如,对于MySQL数据库,可以使用"com.mysql.jdbc.Driver"作为驱动程序。

在使用JDBC连接数据库时,还可以设置其他可选的参数,以提供更多的数据库连接控制和配置。

5.自动提交(AutoCommit)自动提交参数用于指定是否自动将事务中的更改提交到数据库。

默认情况下,自动提交是开启的。

可以通过调用"setAutoCommit(false)"方法来禁用自动提交,然后在需要的时候手动调用"commit()"方法提交事务。

Java连接Oracle数据库常用方法

Java连接Oracle数据库常用方法

Java连接Oracle数据库常用方法在Java中连接Oracle数据库有多种方法,下面是几种常用的方法。

1. 使用JDBC连接Oracle数据库```javaimport java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class OracleConnectionpublic static void main(String[] args)Connection connection = null;try//加载JDBC驱动程序Class.forName("oracle.jdbc.OracleDriver");//创建数据库连接String username = "username";String password = "password";connection = DriverManager.getConnection(url, username, password);//在此处执行SQL语句或其他操作} catch (ClassNotFoundException e) e.printStackTrace(;} catch (SQLException e)e.printStackTrace(;} finally//关闭数据库连接tryif (connection != null) connection.close(;}} catch (SQLException e)e.printStackTrace(;}}}``````javaimport java.sql.Connection;import java.sql.SQLException;import java.util.Properties;public class OracleConnectionPoolpublic static void main(String[] args)BasicDataSource dataSource = null;Connection connection = null;try//创建连接池Properties properties = new Properties(;properties.setProperty("driverClassName", "oracle.jdbc.OracleDriver");properties.setProperty("username", "username");properties.setProperty("password", "password");dataSource =BasicDataSourceFactory.createDataSource(properties);//从连接池中获取连接connection = dataSource.getConnection(;//在此处执行SQL语句或其他操作} catch (Exception e)e.printStackTrace(;} finally//关闭连接tryif (connection != null) connection.close(;}} catch (SQLException e) e.printStackTrace(;}//关闭连接池if (dataSource != null) trydataSource.close(;} catch (SQLException e) e.printStackTrace(;}}}}```3. 使用Spring的JdbcTemplateSpring的JdbcTemplate是一个简化数据库访问的工具类,可以更方便地执行SQL语句。

JAVA与SQLServer数据库连接共有两种方式

JAVA与SQLServer数据库连接共有两种方式

JAVA与SQLServer数据库连接的两种方式一.jdbc-odbc桥方式1.1 建立ODBC数据源:设置——〉控制面板——〉管理工具——〉数据源(ODBC)——〉系统DSN ——〉添加——〉选择SQLServer驱动——>填写数据源名字——〉选择服务器——〉选择登陆方式(默认使用windows NT验证)——〉更改默认数据库为所有数据库——〉完成测试成功则建立完毕。

1.2 导入包:import java.sql.*;1.3 装载驱动:DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());或者:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");第一种方式比较常用,也容易理解;1.4 建立连接:Connection con = DriverManager.getConnection("jdbc:odbc:xx");其中xx是1.1建立的数据源名字,如果建立的数据源选择的windowsNT验证方式,则上面语句即可;如果1.1所建立的数据源登陆方式选择的是SQL用户验证,则这里要写成:Connection con = DriverManager.getConnection("jdbc:odbc:xx","用户名","密码");其中的"用户名","密码"分别是SQLServer所建立的“登陆”用户,并具有对所用库的操作权限;1.5 建立载体:Statement st = con.createStatement();1.6 发出数据请求:查询数据操作:ResultSet rs = st.executeQuery("select * from titles");该语句将sql语句传递给数据库并返回一个结果集rs,即查询结果放在rs对象中;更新数据操作:int count=st.executeUpdate("update USERS set username='aaa' where id=3");所有对数据库进行的具有更新性质的操作(包含update,insert,delete等)都要调用这个方法,返回结果是一个整数,即该操作所影响的行数;1.7 处理结果集:rs.next()将结果集rs中的行指针向后移动一行,注意行指针最初在第一行之前,并没有指向第一行。

Java数据库连接

Java数据库连接

SQL一致性
结构化查询语言 (SQL)是访问关系数据库的标准语言。困难之处在于:虽然大多数的 DBMS(数据库管理 系统)对其基本功能都使用了标准形式的 SQL,但它们却不符合为更高级的功能定义的标准 SQL语法或语义。例 如,并非所有的数据库都支持储存程序或外部连接,那些支持这一功能的数据库又相互不一致。人们希望 SQL中 真正标准的那部份能够进行扩展以包括越来越多的功能。但同时 JDBC API又必须支持现有的 SQL。
JDBC处理 SQL一致性问题的第二种方法是提供 ODBC风格的转义子句,这将在后续部分中讨论。转义语法为 几个常见的 SQL分歧提供了一种标准的 JDBC语法。例如,对日期文字和已储存过程的调用都有转义语法。
对于复杂的应用程序,JDBC用第三种方法来处理 SQL的一致性问题它利用 DatabaseMetaData接口来提供关 于 DBMS的描述性信息,从而使应用程序能适应每个 DBMS的要求和功能。
类型1 类型2
类型3 类型4
JDBC-ODBC桥
这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供 的数据库操作二进制代码库,例如Oracle中的oci.dll)。
本地API驱动
这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库,而在驱动程序中 则包含了Java代码。
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来 访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。 我们通常说的JDBC是面向关系型数据库的。

Java开发Oracle数据库连接JDBCThinDriver的三种方法

Java开发Oracle数据库连接JDBCThinDriver的三种方法

Java开发Oracle数据库连接JDBCThinDriver的三种⽅法Oracle的jdbc驱动三种主要分类:1、JDBC OCI: oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动。

因为它需要Oracle Call Interface and Net8,所以它需要在运⾏使⽤此驱动的JAVA程序的机器上安装客户端软件,其实主要是⽤到orcale客户端⾥以dll⽅式提供的oci和服务器配置。

2、JDBC Thin: thin是for thin client的意思,这种驱动⼀般⽤在运⾏在WEB浏览器中的JAVA程序。

它不是通过OCI orNet8,⽽是通过Java sockets进⾏通信,是纯java实现的驱动,因此不需要在使⽤JDBC Thin的客户端机器上安装orcale客户端软件,所以有很好的移植性,通常⽤在web开发中。

3、JDBC KPRB:这种驱动由直接存储在数据库中的JAVA程序使⽤,如Java Stored Procedures 、triggers、Database JSP's。

因为是在服务器内部使⽤,他使⽤默认或当前的会话连接来访数据库,不需要⽤户名密码等,也不需要数据库url。

⼀.JDBC 连接Oracle 说明JDBC 的应⽤连接Oracle 遇到问题,错误如下:ORA-12505,TNS:listener does not currently know of SID given in connect descriptor TheConnection descriptor used by the client was。

我在DB 层⾯配置了静态注册,并且GLOBAL_DBNAME和SID_NAME 不⼀样,以往的配置都是⼀样的,所以没有发现这个问题。

(SID_DESC =(GLOBAL_DBNAME = dave)(ORACLE_HOME =D:\app\Administrator\product\11.2.0\dbhome_1)(SID_NAME = NEWCCS))Oracle Listener 动态注册与静态注册在⽹上google 了⼀下,发现JDBC Thin Driver 的formats 有三种格式:格式⼀: Oracle JDBC Thin using a ServiceName:jdbc:oracle:thin:@//<host>:<port>/<service_name>Example: jdbc:oracle:thin:@//192.168.2.1:1521/XE注意这⾥的格式,@后⾯有//, 这是与使⽤SID的主要区别。

JDBC常用类接口详解(MySQL为例)

JDBC常用类接口详解(MySQL为例)

JDBC常⽤类接⼝详解(MySQL为例)DriverManager类java.sql.DriverManager 是⽤于管理⼀组JDBC驱动程序的基本服务。

注意: JDBC 2.0 API中新增的DataSource接⼝提供了另⼀种连接到数据源的⽅法。

使⽤DataSource对象是连接到数据源的⾸选⽅法。

DriverManager类功能注册驱动告诉程序该使⽤什么数据库驱动jar可以直接使⽤DriverManager类的静态⽅法注册驱动:static void registerDriver(Driver driver)// 注册与给定的驱动程序 DriverManager 。

也可以间接使⽤该⽅法,如下介绍直接和间接调⽤DriverManager类的静态⽅法注册驱动。

如我们要连接操作的是MySQL,那么我们就要注册驱动,告诉程序要使⽤MySQL驱动架包。

如下就是注册MySQL数据库驱动:注册驱动第⼀种⽅法:Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");// 将字节码⽂件Driver.java加载进内存,返回Driver.class对象。

注册驱动第⼆种⽅法:com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();DriverManager.registerDriver(driver);com.mysql.jdbc.Driver类中存在静态代码块,如下:static {try {DriverManager.registerDriver(new Driver());} catch (SQLException var1) {throw new RuntimeException("Can't register driver!");}}这⾥可以看出来,两种驱动⽅法其实都是⼀样的,都要⽤到静态⽅法registerDriver()备注:MySQL 5 之后的驱动jar包可以省略注册驱动的步骤。

使用JDBC连接数据库(一)

使用JDBC连接数据库(一)

使⽤JDBC连接数据库(⼀)JDBC是由java编程语⾔编写的类及接⼝组成,同时它为程序开发⼈员提供了⼀组⽤于实现对数据库访问的JDBC API,并⽀持SQL语⾔。

利⽤JDBC可以将JAVA代码连接到oracle、DB2、SQLServer、MYSQL等数据库,从⽽实现对数据库中的数据操作的⽬的。

⼀、JDBC简介JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供填统⼀的访问。

JDBC是sun开发的⼀套数据库访问编程接⼝,是⼀种SQL级的API。

它是由java语⾔编写完成,所以具有很好的跨平台特性,使⽤JDBC编写的数据库应⽤程序可以在任何⽀持java的平台上运⾏,⽽不必在不同的平台上编写不同的应⽤程序。

JDBC的主要功能如下:(1)建⽴与数据库或者其他数据源的链接(2)向数据库发送SQL命令(3)处理数据库的返回结果⼆、JDBC中常⽤类和接⼝连接到数据库(Connection)、建⽴操作指令(Statement)、执⾏查询指令(executeQuery)、获得查询结果(ResultSet)等。

1、驱动程序管理类(DriverManager)DriverManager类是JDBC的管理类,作⽤于⽤户和驱动程序之间。

它跟踪在可⽤的驱动程序,并在数据库和相应驱动程序之间建⽴连接。

另外,DriverManager类也处理诸如驱动程序登陆时间限制及登录和跟踪消息的显⽰事务。

对于简单的应⽤程序,⼀般程序员需要在此类中直接使⽤唯⼀的⽅法时DriverManager.getConnection()。

该⽅法将建⽴与数据库的链接。

JDBC允许⽤户调⽤DriverManager的⽅法getDriver()、getDrivers()和registerDriver()及Driver的⽅法connect().2、声明类(Statement)Statement对象⽤于将SQL语句发送到数据库中。

java连接各个数据库驱动名大全

java连接各个数据库驱动名大全

java连接各个数据库驱动名大全/**Oracle数据库连接*/Class.forName("oracle.jdbc.dirver.OracleDriver").n ewInstance();String url="jdbc:oracle:thin:@localhost:1521:orcl";//这里的orcl为数据库(SID实例名)String user="system";//用户名String pwd="manager123456";//密码java.sql.Connection conn=DriverManager.getConnection(url,user,pwd);Microsoft SQL Server:String Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接SQL数据库的方法String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name"; //db_name为数据库名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).new Instance(); //加载数据可驱动Connection con=DriverManager.getConnection(URL,UserName,Passw ord); //MySQL: String Driver="com.mysql.jdbc.Driver"; //驱动程序String URL="jdbc:mysql://localhost:3306/db_name"; //连接的URL,db_name为数据库名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).new Instance();Connection con=DriverManager.getConnection(URL,Username,Passw ord);/**Sybase数据库连接*/Class.forName("com.sybase.jdbc.SybDriver").newInst ance();String url="jdbc:sybase:Tds:localhost:5007/erp";//erp为数据库名Properties sysProps=System.getProperties();sysProps.put("user","sa");//用户名sysProps.put("password","");//密码java.sql.Connection conn=DriverManager.getConnection(url,SysProps);/**DB2数据库连接*/Class.forName("com.ibm.db2.jdbc.app.DB2Driver").ne wInstance();String url="jdbc:db2://localhost:5000/sample";//sample为DB2数据库名String user="admin";String pwd="";//密码java.sql.Connetion conn=DriverManager.getConnection(url,user,pwd);/**Imformix数据库连接*/Class.forName("rmix.jdbc.IfxDriver").newIn stance();String url="jdbc:informix-sqli://localhost:1533/test:INFO RMIXSERVER=infserver"; user="sa";//用户名password="pwd";//密码//test为数据库名//java.sql.Connection conn=DriverManager.getConnection(url,user,password );/**Sql Server数据库连接*/Class.forName("com.microsoft.jdbc.sqlserver.SQLSer verDriver").newInstance(); String url="jdbc:microsoft:sqlserver://localhost:1433;Dat abaseName=pubs";//pubs数据库名String user="sa";String pwd="";java.sql.Connection conn=DriverManager.getConnection(url,user,pwd);/**PostgreSQL数据库连接*/Class.forName("org.postgresql.Driver").newInstance ();String url="jdbc:postgresql://localhost/netshop";//newshop数据库名String user="root";String pwd="123456";java.sql.Connection conn=DriverManager.getConnection(url,user,pwd);Sysbase:String Driver="com.sybase.jdbc.SybDriver"; //驱动程序String URL="jdbc:Sysbase://localhost:5007/db_name"; //db_name为数据可名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance();Connection con=DriverManager.getConnection(URL,Username,Passw ord);Oracle(用thin模式):String Driver="oracle.jdbc.driver.OracleDriver"; //连接数据库的方法String URL="jdbc:oracle:this:@loaclhost:1521:orcl"; //orcl为数据库的SIDString Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance(); //加载数据库驱动Connection con=DriverManager.getConnection(URL,Username,Passw ord);PostgreSQL:String Driver="org.postgresql.Driver"; //连接数据库的方法String URL="jdbc:postgresql://localhost/db_name"; //db_name为数据可名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance();Connection con=DriverManager.getConnection(URL,Username,Passw ord);DB2: String Driver="com.ibm.db2.jdbc.app.DB2.Driver"; //连接具有DB2客户端的Provider实例//String Driver=".DB2.Driver"; //连接不具有DB2客户端的Provider实例String URL="jdbc:db2://localhost:5000/db_name"; //db_name为数据可名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance();Connection con=DriverManager.getConnection(URL,Username,Passw ord);Informix:String Driver="rmix.jdbc.IfxDriver";String URL="jdbc:Informix-sqli://localhost:1533/db_name:I NFORMIXSER=myserver"; //db_name为数据可名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance();Connection con=DriverManager.getConnection(URL,Username,Passw ord);JDBC-ODBC:String Driver="sun.jdbc.odbc.JdbcOdbcDriver";String URL="jdbc:odbc:dbsource"; //dbsource为数据源名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance();Connection con=DriverManager.getConnection(URL,Username,Passw ord);。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#使用JDBC操作数据库#1、"JDBC基础#JDBC简介:JDBC(Java Database Connectivity)是一种可以执行SQL的Java API,通过它可以用一种API操作不同的数据库.#JDBC驱动:不同数据库间,标准的SQL语句可以移植,而数据库实际通信协议及某些数据库特征不可移植,因此,JDBC和数据库之间须还有一层,用于将JDBC调用映射成特定的数据库调用,此特殊层就是JDBC驱动程序.常见的JDBC驱动有四种:》JDBC-ODBC桥,是最早实现的JDBC驱动程序,目的为了快速推广JDBC,非多线程,能力有限,此驱动程序将JDBC API映射成ODBC API》直接将JDBC API映射成数据库特定的客户端API,这种驱动程序包含特定数据库的本地代码,可用于特定数据库的客户端》支持三层结构的JDBC访问方式,主要用于Applet阶段,通过Applet访问数据库》纯java的,直接与数据库实例交互,智能型的,知道数据库使用的底层协议,是目前最流行的JDBC驱动#JDBC常用接口和类简介DriverManager:用于管理JDBC驱动的服务类,主要方法是获得Connection对象public static synchronized Connection getConnection(String url,String user,String pass)throws SQLExceptionConnection:代表一个数据库连接物理会话,若放我数据库,须先获得数据库连接.常用方法》Statement createStatement() throws SQLException返回Statement对象》PreparedStatement prepareStatement(Strin sql) throws SQLException返回编译的Statement对象》CallableStatement preparedCall(Strin sql) throws SQLException返回的CallableStatement对象用于存储过程调度Statement:执行DML SQL的工具接口,常用方法:》ResultSetexecuteQuery(Stringsql)throwsSQLException执行查询,返回结果集对应的ResultSet对象》int executeUpdate(String sql) throws SQLException执行DML并返回受影响的行数》boolean execute(String sql) throws SQLException返回boolean表式执行成功与否PreparedStatement :是Statement的子接口,允许数据库预编译SQL,避免数据库每次重新编译,以后每次只改变SQL的参数,性能较好,常用方法》ResultSet executeQuery() throws SQLException执行查询,返回结果集对应的ResultSet对象》int executeUpdate() throws SQLException执行DML并返回受影响的行数》boolean execute() throws SQLException返回boolean表式执行成功与否注:上述方法因SQL预编译,无须接手SQL字符串,只是需要接收参数,故有如下方法void setXxx(intparamIndex,Xxx value)ResultSet:包含访问结果集的方法,可通过列索引或列名获得列数据,常用方法》boolean next() throws SQLException,将ResultSet定位到下一行,结果集的起始位在第一行之前》void close()throws SQLException释放ResultSet对象》boolean absolute(int row)throws SQLException将结果集移到指定行,若row 是负值,则倒数移动注:默认方法创建的ResultSet不支持absolute方法因为结果集不支持后移,若想支持,需要如此创建:Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONC UR_UPDATABLE);:ResultSet rs=stmt.executeQuery(sql);#传统JDBC访问数据库步骤》通过Class.forName(String driverClass)注册数据库驱动》通过DriverManager.getConnection(String url,String user,String password)获得数据库连接对象》通过Connnection.createStatement()或者Connection.createPreparedStatement(String sql)创建相应的Statement对象》通过Statement.execute(String sql)或者PreparedStatement.execute()执行相应的SQL,并返回ResultSet对象》操作ResultSet#2、"数据库连接池》数据库连接的建立及关闭极其耗资源,对系统性能影响尤为明显.》传统数据库连接方式:一个数据库连接均对应一个物理连接,每次操作都要打开、关闭该物理操作,这种频繁性,会造成系统性能下降,此时,考虑数据库连接池.》数据库连接池解决方案:当应用程序启动时,系统主动建立足够的连接(按指定的初始化数据),并将这些连接组成一个池.每次应用程序请求数据库连接时,无需重新打开连接,而是从池中取出已有的连接,使用完后,不再关闭,而是直接将该连接归还池,使用连接池,可大大提高系统运行效率.》数据库连接池介绍》对于共享资源的情况,有一个通用的设计模式--资源池(ResourcePool),用于解决资源的频繁请求、释放所造成的性能下降.为解决数据库连接的这种频繁性,JDBC2."0规范引入了数据库连接池技术,实际上,数据库连接池是Connection对象的工厂,常用参数有:@数据库的初始连接数@连接池的最大连接数@连接池每次增加的连接数》连接池的工作示意图{JDBC标准的API并没有提供连接池的实现,仅仅提供了DataSource接口具体的实现有一些厂商提供}》连接池的分配与释放@程序启动,分配初始化数目的连接,按需分配,用过归还、超时归还,当申请时无或者达到指定的最小值,按增量参数值分配新的连接@为确保连接池中最小的连接数,通常有如下策略::动态--定时检查连接池,一旦发现数量小于最小连接数,则补充相应的新连接,保证连接池正常运转:静态--空闲连接不足时,系统才检测是否达到最小连接》连接池的实现连接池通常包括连接池类(DBConnectionPool)和连接池管理类(DBConnectionPoolManager):》连接池类是某一数据库所有连接的缓冲池,主要实现功能:@从连接池获取或者创建可用连接,@使用完毕,归还给池连接,@系统关闭前,断开所有连接并释放连接占用的资源,@处理无效连接,@限制池中连接的数节目,介于最小值和最大值之间》连接池管理类是连接池类的包装类,该类采用单态模式设计,保证系统中只有一个实例,主要用于管理多个连接池对象,主要实现以下功能:@注册数据库驱动程序,@根据配置文件,创建连接池对象,@命名、管理连接池,@跟踪连接池的使用,需要时关闭并释放资源:数据库连接池的管理是个难点,管理不当,造成系统开销过大,将成为性能瓶颈.对于高并发的WEB应用,采用连接池技术效率和稳定性比传统的连接方式要好的多:并发问题--数据库必须考虑此问题,对于并发,Java语言提供管理并发的支持,使用synchronized关键字可确保方法线程的安全.故,DataSource的getConnection方法必须以该该关键字修饰连接池需要复用connection,因此,必须提供相应的事务支持机制.考虑采用每个事务独占一个连接,此法可降低事务管理复杂性.:多数据库服务器和多用户--JDBC规范中,DataSource具备同时连接不同数据库的能力,如同时连oracle和sql server.此时,考虑使用xml配置文件来配置连接所需的相关信息.然后,提供一个Singleton模式的连接池管理类,该管理类每次启动时读取配置文件信息,创建多个连接池类的实例,每个实例对应一个数据库连接池.连接池管理类实例命名每个连接池实例,通过不同的名称管理不同的连接池.对于多个用户访问同一个数据库的情况,也可考虑使用xml配置文件.》常见的数据库连接池通常,没有必要自己实现连接池.商用应用服务器都有自己的连接池实现,如WebLogic和WebSphere,其性能和稳定性绝佳,即使没有商用应用服务器,也可使用开源的连接池.目前流行的有2个:@DBCP连接池@C3P0连接池》DBCP连接池Appache提供的开源实现,依赖于两个jar文件1."2.1."jar:连接池的实现连接池实现的依赖库Tomcat的连接池正是采用该连接池实现的.连接该连接池,既允许与应用服务器整合使用,又可由应用程序独立使用.下面的代码DBConn类通过DBCP获得数据库连接:public class DBConn{private static DBConn dc;private Connection conn = null;private Statement stmt = null;private DBConn(){}public static DBConn instance(){if (dc == null){dc = new DBConn();}return dc;}public Statement openStmt(){if (stmt == null){conn = getConn();try{stmt = conn.createStatement();}catch (Exception e){System.err.println("创建Statement异常:" + e.getMessage());}}return stmt;}public void closeStmt(){if (stmt != null){try{stmt.close();}catch (Exception e){System.err.println("Statement关闭异常");}}if (conn != null){try{conn.close();}catch (Exception e){System.err.println("数据库关闭异常");}}}private Connection getConn(){if (conn == null){try{BasicDataSource ds = new BasicDataSource();ds.setUrl("jdbc:mysql://localhost:3306/j2ee");ds.setUsername("root");ds.setPassword("123456");conn = ds.getConnection();}catch (Exception e){e.printStackTrace();}}return conn;}}》C3P0连接池Hibernate推荐使用该优秀的连接池,它实现了JDBC3."0规范的部分功能,故其性能更加突出,该池不仅可自动清理不再使用的Connection,还可以自动清理Statement和ResultSet.C3P0连接池需要jre1."3以上,推荐jre1."4若需使用C3P0连接池,应将包c3p0-0."8.5."jar文件复制进系统.下面代码是通过C3P0连接池获得数据库连接:public class DBConn{private static DBConn dc;private Connection conn = null;private Statement stmt = null;private DBConn(){}public static DBConn instance(){if (dc == null){dc = new DBConn();}return dc;}public Statement openStmt(){if (stmt == null){conn = getConn();try{stmt = conn.createStatement();}catch (Exception e){System.err.println("创建Statement异常:" + e.getMessage());}}return stmt;}public void closeStmt(){if (stmt != null){try{stmt.close();}catch (Exception e){System.err.println("Statement关闭异常");}}if (conn != null){try{conn.close();}catch (Exception e){System.err.println("数据库关闭异常");}}}public Connection getConn(){if (conn ==null){try{ComboPooledDataSource ds = new ComboPooledDataSource();ds.setJdbcUrl("jdbc:mysql://localhost:3306/j2ee");ds.setUser("root");ds.setPassword("32147");ds.setMaxPoolSize(40);ds.setMinPoolSize(2);ds.setMaxStatements(180);conn = ds.getConnection();}catch (Exception e){e.printStackTrace();}}return conn;}}#3、"Spring的JDBC体系》Spring提供的JDBC抽象框架由core、datasource、object和support4个包组成.core包含Spring JDBC抽象的核心类,包含各种SQLExceptionTranslator,用于将SQLException转化成spring的异常继承体系,还有DataFileMaxValueIncrementer 实现,以及JdbcTemplate,持久层访问模板类.datasource包含简化数据源连接的工具类,以及各种数据源的简单实现.通过这些实现,spring可以在j2ee之外测试jdbc代码.通过该工具类,可以从JNDI获得连接,并可关闭连接.object包里的工具类,可将数据库的查询、更新等过程封装成类.这种方式模拟JDO的访问方式,纵横四海查询返回的"值对象"不与数据库关联.support包含了JdbcDaoSupport等工具类.底层数据库异常被包装成org.springframework.dao中的异常,是运行时异常,故,通过JDBC抽象进行的持久操作,无需处理jdbc访问特定的异常.Spring允许将包装后的异常传播到特定的层.》Spring的JDBC封装核心是JdbcTemplate,简化了JDBC的使用,可以处理数据库的连接和释放,故,可避免没有数据库关闭造成的连接泄露.使用构造器JdbcTemplate(DataSource dataSource),可通过数据源引用创建JdbcTemplate实例,实际应用中,可以通过JdbcDaoSupport取得,JdbcDaoSupport的getJdbcTemplate()方法会创建JdbcTemplate实例,所需的数据源有JdbcDaoSupport提供.JdbcTemplate提供系列方法简化数据库访问,主要常用有:》void execute(String sql)主要用于执行DDL语句》Listquery(Stringsql,Object[]args,RowMapper)执行SQL查询,并将每条记录映射成bean实例,返回bean的实例集合》List queryForList(String sql,Object[] args)》Object queryForObject(String sql,RowMapper rowMapper)》int update(String sql)》int update(String sql,Object[] args)》JDBC封装的回调接口这些回调接口允许在spring的JDBC抽象体系内,使用原生JDBC查询,避免spring对JDBC封装后的灵活性不足缺点.Spring JDBC抽象体系内的回调接口有:》CallableStatementCallback:通过该接口,可使用原生的JDBC命令调用存储过程和函数》CallableStatementCreator:是JdbcTemplate使用的两个核心回调接口之一,通过该接口可以获得CallableStatement对象》PreparedStatementCallback:通过该接口,可以使用原生的JDBC命令访问数据库》PreparedStatementCreator:是JdbcTemplate使用的两个核心回调接口之一,通过该接口可以获得PreparedStatement对象》StatementCallback:作用类似PreparedStatementCallback,只是不具备预编译功能》Spring JDBC与传统JDBC对比》简化连接获取方式--无须每次采用DriverManager获得连接,也不需使用JNDI查找获得连接.Spring的JDBC连接依赖IOC容器注入》模板化操作方式--无需繁琐的getConnection,createStatement等操作》优秀的面向对象操作方式--结果直接转化成JavaBean传出》一致的异常继承体系--无需捕获JDBC特定的数据库异常,JDBC的checked 异常被包装成了Runtime异常,不再要求强制捕捉#4、"JdbcTemplate访问数据库》执行简单的查询{API详见Spring API2."0}intqueryForXxx(Stringsql):静态SQL命令执行查询,Xxx可以是int或long,返回一个标量值,而且只能返回一行记录int queryForXxx(String sql,Object[] args):同上,带参数而已Object queryForObject(String sql,Class requiredType):返回执行单列的查询,将返回结果转换成requiredType类型的对象注:只支持特定类型的转换,比如,varchar只能转成StringList queryForList(String sql):List queryForList(String sql,Object[] args):List queryForList(String sql,Class requiredType):List queryForList(String sql, Object[] args, Class elementType):/**示例*/public class JdbcTemplateQuery{public static void main(String[] args)throws Exception{ComboPooledDataSource ds = new ComboPooledDataSource();ds.setJdbcUrl("jdbc:mysql://localhost:3306/j2ee");ds.setUser("root");ds.setPassword("32147");ds.setMaxPoolSize(40);ds.setMinPoolSize(2);ds.setMaxStatements(180);//创建一个JdbcTemplateJdbcTemplate jt = new JdbcTemplate();//为JdbcTemplate指定DataSourcejt.setDataSource(ds);//如果只需返回一个特定值,可直接查询int count = jt.queryForInt("select count(*) from mytable");System.out.println(count);//此处的转换实际非常简单:只支持Varchar->String的转换.String nametmp = (String)jt.queryForObject("select name from mytable where name='wa2'",String.class);System.out.println(nametmp);List namelist = jt.queryForList("select name from mytable");for (Iterator it =namelist.iterator();it.hasNext(); ){System.out.println(it.next().getClass());}//返回系列值List list = jt.queryForList("select * from mytable");for (Iterator it =list.iterator();it.hasNext(); ){System.out.println(it.next().getClass());System.out.println((Map)it.next());}}}》执行更新的int update(String sql)int update(String sql,Object[] args)int update(String sql,Object[] args,int[] argTypes):使用PreparedStatement执行更新,args用于传入参数,argTypes指定参数的SQL类型/**示例*/public class JdbcTemplateUpdate{public static void main(String[] args)throws Exception{ComboPooledDataSource ds = new ComboPooledDataSource();ds.setJdbcUrl("jdbc:mysql://localhost:3306/j2ee");ds.setUser("root");ds.setPassword("32147");ds.setMaxPoolSize(40);ds.setMinPoolSize(2);ds.setMaxStatements(180);//创建一个JdbcTemplateJdbcTemplate jt = new JdbcTemplate();//为JdbcTemplate指定DataSourcejt.setDataSource(ds);jt.update("update mytable set name = 'china' where name='aaa'"); String[] values = {"American"} ;jt.update("update mytable set name = ? where name='china'" , values);}} 》执行简单DDL的void execute(String sql)/**示例*/public class JdbcTemplateDdl{public static void main(String[] args)throws Exception{ComboPooledDataSource ds = new ComboPooledDataSource();ds.setJdbcUrl("jdbc:mysql://localhost:3306/j2ee");ds.setUser("root");ds.setPassword("123456");ds.setMaxPoolSize(40);ds.setMinPoolSize(2);ds.setMaxStatements(180);//创建一个JdbcTemplateJdbcTemplate jt = new JdbcTemplate();//为JdbcTemplate指定DataSourcejt.setDataSource(ds);jt.execute("drop table if exists wa");jt.execute("create table xxx(name varchar(100))");System.out.println("正常结束");}}#5、"StatementCallback访问数据库JdbcTemplate对数据库访问包装,持久化操作更简单,但降低了访问的灵活性,而通过回调接口的使用,可弥补此损失.通过StatementCallback接口,可获得JdbcTemplate的Statement回调,使用原生的SQL命令,此时,同样可利用JdbcTemplate提供的系列优点,如一致的异常体系.StatementCallback回调接口只有一个方法需实现:Object doInStatement(Statement stmt)throwsSQLException,DataAccessException在该方法的执行体内,可获得Statement的引用,从而完成数据库的访问./**示例*/public class ExecuteStatementCallback{public static void main(String[]args)throws Exception{ComboPooledDataSource ds = new ComboPooledDataSource();ds.setJdbcUrl("jdbc:mysql://localhost:3306/j2ee");ds.setUser("root");ds.setPassword("32147");ds.setMaxPoolSize(40);ds.setMinPoolSize(2);ds.setMaxStatements(180);//创建一个JdbcTemplateJdbcTemplate jt = new JdbcTemplate();//为JdbcTemplate指定DataSourcejt.setDataSource(ds);jt.execute(new StatementCallback(){public Object doInStatement(Statement stmt)throws SQLException{stmt.execute("update mytable set name = 'xx' where name ='American' ");return null;}});}}程序中,通常使用StatementCallback的匿名内部类创建StatementCallback实例,实现该接口,则要求实现doInStatement(Statement stmt)方法,其方法体就是实际要执行的SQL操作#6、"PreparedStatementCallback访问数据库作用类似于StatementCallback接口,只是使用了PreparedStatement对象/**示例*/public class ExecutePreparedStatementCallback{public static void main(String[] args)throws Exception{ComboPooledDataSource ds = new ComboPooledDataSource();ds.setJdbcUrl("jdbc:mysql://localhost:3306/j2ee");ds.setUser("root");ds.setPassword("32147");ds.setMaxPoolSize(40);ds.setMinPoolSize(2);ds.setMaxStatements(180);//创建一个JdbcTemplateJdbcTemplate jt = new JdbcTemplate();//为JdbcTemplate指定DataSourcejt.setDataSource(ds);jt.execute("update mytable set name=? where name = 'xx'", new PreparedStatementCallback(){public Object doInPreparedStatement(PreparedStatement pstmt)throws SQLException{pstmt.setString(1,"-----");pstmt.execute();return null;}});}}#7、"连接数据库的辅助类》DataSourceUtils工具类:通过DataSource获取连接,支持线程的绑定,如用于DataSourceTransactionManager.含有很多静态方法,主要有2个:》static Connection getConnection(DataSource dataSource)》static voic releaseConnection(Connection con,DataSource dataSource)通常情况下建议使用spring的IOC容器管理DataSource./**示例*/public class BeanTest{public static void main(String[] args)throws Exception{//创建DataSource实例ComboPooledDataSource ds = new ComboPooledDataSource();//加载DataSource驱动//设置连接数据库的urlds.setJdbcUrl("jdbc:mysql://localhost:3306/j2ee");//设置数据库用户名ds.setUser("root");//设置数据库密码ds.setPassword("32147");//设置池的最大连接数ds.setMaxPoolSize(40);//设置池的最小连接数ds.setMinPoolSize(2);ds.setMaxStatements(180);//以下才是真正使用Spring的JDBC的事务方法Connection conn = DataSourceUtils.getConnection(ds);java.sql.Statement stmt = conn.createStatement();stmt.execute("insert into mytable values('wddda2')");}}通过DataSourceUtils获得连接比使用DataSource的getConnection直接获取的更智能,前者的连接在必要时自动关闭.在Spring的事务管理结合时,更具有独特的能力.》SmartDataSource接口:继承DataSource接口,提供一些额外的功能,在恰当的时候关闭连接,更加智能化.》SingelConnectionDataSource类:采用单态模式实现SmartDataSource接口/**示例*/public class BeanTest{public static void main(String[] args)throwsException{SingleConnectionDataSource ds = new SingleConnectionDataSource();ds.setPassword("32147");ds.setUrl("jdbc:mysql://localhost:3306/j2ee");ds.setUsername("root");//ds.setSuppressClose(true);Connection conn = DataSourceUtils.getConnection(ds);System.out.println(conn);//java.sql.Statement stmt = conn.createStatement();//stmt.execute("insert into mytable values('w52x')");//conn.close();//conn.createStatement();System.out.println(DataSourceUtils.getConnection(ds));System.out.println(DataSourceUtils.getConnection(ds));}}》DriverManagerDataSource类继承Spring的抽象类AbstractDataSource,实际上,DriverManagerDataSource常被作为SmartDataSource的一个实现,而不是作为JDBC2."0规范的DataSource实现.因为DriverManagerDataSource并不具备连接池的能力.该类主要用于测试,它可以脱离j2ee容器独立运行,可以作为不同ApplicationContext的数据源bean,也可以和简易的JNDI环境一起工作./**示例*/public class TransactionTest{public static void main(String[] args){final ApplicationContext ctx = newFileSystemXmlApplicationContext("bean.xml");System.out.println("============");PlatformTransactionManager transactionManager =(PlatformTransactionManager)ctx.getBean("transactionManager");TransactionTemplate tt = new TransactionTemplate(transactionManager);tt.execute(new TransactionCallbackWithoutResult(){protected void doInTransactionWithoutResult(TransactionStatus ts){try{DataSource ds = (DataSource)ctx.getBean("dataSource");Connection conn = DataSourceUtils.getConnection(ds);java.sql.Statement stmt = conn.createStatement();stmt.execute("insert into mytable values('china')");stmt.execute("insert into mytable values('wa2')");//让此句引发异常就可看出事务的管理}catch (SQLException sqle){//这种方式无须显式提交,但需要在出现异常的时候显式回滚ts.setRollbackOnly();sqle.printStackTrace();}} });}}。

相关文档
最新文档