一、Jsp连接Oracle8/8i/9i数据库(用Thin模式) Testoracle.Jsp如下: <%@ Page ContentType="Text/Html;Charset=Gb2312"%> <%@ Page Import="Java.Sql.*"%> <Html> <Body> <%Class.ForName("Oracle.Jdbc.Driver.OracleDriver").NewInstance(); String Url="Jdbc:oracle:thin:@Localhost:1521:Orcl"; //Orcl为你的数据库的SID String User="Scott"; String Password="Tiger"; Connection Conn= DriverManager.GetConnection(Url,User,Password); Statement Stmt=Conn.CreateStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String Sql="Select * From Test"; ResultSet Rs=Stmt.ExecuteQuery(Sql); While(Rs.Next()) {%> 您的第一个字段内容为:<%=Rs.GetString(1)%> 您的第二个字段内容为:<%=Rs.GetString(2)%> <%}%> <%Out.Print("数据库操作成功,恭喜你");%> <%Rs.Close(); Stmt.Close(); Conn.Close(); %> </Body> </Html> 二、Jsp连接Sql Server7.0/2000数据库 Testsqlserver.Jsp如下: <%@ Page ContentType="Text/Html;Charset=Gb2312"%> <%@ Page Import="Java.Sql.*"%> <Html> <Body> <%Class.ForName("Com.Microsoft.Jdbc.Sqlserver.SQLServerDriver").NewInstance(); String Url="Jdbc:microsoft:sqlserver://Localhost:1433;DatabaseName=Pubs"; //Pubs为你的数据库的 String User="Sa"; String Password=""; Connection Conn= DriverManager.GetConnection(Url,User,Password); Statement Stmt=Conn.CreateStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String Sql="Select * From Test"; ResultSet Rs=Stmt.ExecuteQuery(Sql); While(Rs.Next()) {%> 您的第一个字段内容为:<%=Rs.GetString(1)%> 您的第二个字段内容为:<%=Rs.GetString(2)%> <%}%> <%Out.Print("数据库操作成功,恭喜你");%> <%Rs.Close(); Stmt.Close(); Conn.Close(); %> </Body> </Html> 三、Jsp连接DB2数据库 Testdb2.Jsp如下: <%@ Page ContentType="Text/Html;Charset=Gb2312"%> <%@ Page Import="Java.Sql.*"%> <Html> <Body> <%Class.ForName("Com.Ibm.Db2.Jdbc.App.DB2Driver ").NewInstance(); String Url="Jdbc:db2://Localhost:5000/Sample"; //Sample为你的数据库名 String User="Admin"; String Password=""; Connection Conn= DriverManager.GetConnection(Url,User,Password); Statement Stmt=Conn.CreateStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String Sql="Select * From Test"; ResultSet Rs=Stmt.ExecuteQuery(Sql); While(Rs.Next()) {%> 您的第一个字段内容为:<%=Rs.GetString(1)%> 您的第二个字段内容为:<%=Rs.GetString(2)%> <%}%> <%Out.Print("数据库操作成功,恭喜你");%> <%Rs.Close(); Stmt.Close(); Conn.Close(); %> </Body> </Html> 四、Jsp连接Informix数据库 Testinformix.Jsp如下: <%@ Page ContentType="Text/Html;Charset=Gb2312"%> <%@ Page Import="Java.Sql.*"%> <Html> <Body> <%Class.ForName("Com.Informix.Jdbc.IfxDriver").NewInstance(); String Url = "Jdbc:informix-Sqli://123.45.67.89:1533/TestDB:INFORMIXSERVER=Myserver; User=Testuser;Password=Testpassword"; //TestDB为你的数据库名 Connection Conn= DriverManager.GetConnection(Url); Statement Stmt=Conn.CreateStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String Sql="Select * From Test"; ResultSet Rs=Stmt.ExecuteQuery(Sql); While(Rs.Next()) {%> 您的第一个字段内容为:<%=Rs.GetString(1)%> 您的第二个字段内容为:<%=Rs.GetString(2)%> <%}%> <%Out.Print("数据库操作成功,恭喜你");%> <%Rs.Close(); Stmt.Close(); Conn.Close(); %> </Body> </Html>
================================================================= ================================================================= Jdbc应用--数据库连接全集
这是一篇基础性文章,主要介绍了Jdbc在流行数据库(Sql Server,Oracle)方面的应用。但是都是个人观点,所以不能保证完全正确,仅供参考,如果有不同意见可以在评论中指出,我会做相应的修改。:) 一般情况下,直接用Jdbc等东西连数据库时,比较常用连数据库的代码可能是: Private Connection Conn Private String PoolURL = ""; Private String DriverName =""; Private String User="" Private String Pass=""; Private DBConnProxy Proxy; //自己写的Class,起控制数据库访问作用 Public Object GetConn() { Try { Properties Prop=New Properties(); Prop.SetProperty("User",User); Prop.SetProperty("Password",Pass); Driver Mydriver=(Driver)Class.ForName(DriverName).NewInstance(); Conn = Mydriver.Connect(PoolURL,Prop);//或者Conn = Mydriver.Connect(PoolURL,Null);具体什么时候用我还的请教高手。 /* 或者: Class.ForName(DriverName); Conn=DriverManager.GetConnection(PoolURL, User, Pass); */ } Catch ( Exception E ) { System.Out.Println("打开数据库出错/N" + E.GetMessage()); }
If(!Proxy.GetDB() ){ This.Close() Return Null; }
Return Conn; } 其中的 DriverName,PoolURL,User,Pass都可以通过读取 Xml文件或普通属性文件获取。而是连Sqlserver还是Oracle就只是改改配置就可以了。 它们都可以用 Sun.Jdbc.Odbc.JdbcOdbcDriver 来连。对应PoolURL="Jdbc:odbc:test",User,Pass略 也可以用自己特有的: Sqlserver:weblogic.Jdbc.Mssqlserver4.Driver (网上下) 对应PoolURL="Jdbc:weblogic:mssqlserver4:Ceic@127.0.0.1" //Ceic是数据库名,127.0.0.1是数据源位置,可以是远程的数据库,User,Pass略 Oracle:oracle.Jdbc.Driver.OracleDriver (Class12.Zip,装了Oracle就应该有了) 对应Jdbc:oracle:thin:scott/Tiger@10.1.103.234:1521:Sp" Scott/Tiger连接身份的用户名/密码,10.1.103.234,数据源Ip,1521:端口(默认是1521). Sp指向数据库名User,Pass略 如果用的Weblogic配的数据库连接,可以通过 Context Ctx = New InitialContext(); DataSource Ds = (DataSource)Ctx.Lookup("Forceicdatasource"); //Forceicdatasource是配的Datasource.也可以通过和上面统一的方法来调用。 Weblogic:weblogic.Jdbc.Pool.Driver //DriverName 对应的PoolURL="Jdbc:weblogic:pool:poolname" //Poolname是在Weblogic中配的Jdbc类型的Connections Pool的名字。User,Pass是Weblogic用户(Administrators用户组中的用户)的用户名和密码。(如果不是用DriverManager就用不上,"Conn = Mydriver.Connect(PoolURL,Null);"就是在这种情况下可以用。我在Weblogic 6.1下测试通过) 综上说的,可以看出,大多数数据库连接都可以通过配置 属性文件 来灵活的获取。(移植起来很是方便,并且对应用基本没有什么影响,当然也可以夸平台)所以我可以通过动态读取属性文件来解决。 Private String JavaHome = System.GetProperty("Java.Home"); Private Final String FS = System.GetProperty("File.Separator"); Private String Path = JavaHome+FS+"Db.Properties"; //把Db.Properties放在系统属性Java.Home下,一般是Jdk目录下的 Jre目录里。 Public Boolean GetInfo(){ File File=New Java.Io.File(Path); Properties Pro=New Properties(); Boolean Readsucced; Try{ InputStream In=New BufferedInputStream(New FileInputStream(File)); Pro.Load(In); DriverName=Pro.GetProperty("DriverName"); PoolURL=Pro.GetProperty("PoolURL") User=Pro.GetProperty("User") Pass=Pro.GetProperty("Pass") //自己把它们Trim()掉。我就偷懒不写了。 Readsucced=True; }Catch(Exception E){System.Out.Println("读取属性文件出错");Readsucced=False;} Return Readsucced; } 不过一般只用读一次就可以了。所以可以把它放在 Static{}块里,也可以放在构造器里面(然后和放在静态连接池,如果是单独的应用,应该把GetInfo()作为静态类和数据库连接类分开)。 Public DBConn() { SetDBConnProxy(ProxyFactory.DefaultType );//设定连接Proxy,控制数据库连接频率,可能会牺牲效力,不过在防止恶意破坏上有点作用,自己写的毕竟赶不上Weblogic的连接池了。所以只好做点小的防范措施.如果是用Weblogic配的连接池,可以直接在ProxyFactory里面加个什么都不做的Proxy. GetInfo(); } 属性文件Db.Properties内容如下: DriverName=Sun.Jdbc.Odbc.JdbcOdbcDriver PoolURL=Jdbc:odbc:test User=Sa
自己可以耕具实际情况去更改属性文件。 注: GetConn()方法返回的是 Object,是不同的数据库连接有不同的扩展应用,比如Oracle的就有针对Clob,Blob的应用(用Class12.Zip的情况下),普通的Connection不能满足,所以可以通过在应用中把GetConn()返回的Object转化成OracleConnection来用。(个人观点,不知道有没有更好的解决方法) 上面写的这么多,可能只对新手有点用处,在J2ee风行的今天已经很落伍了,还希望高手指出问题一起讨论(还没有有关于Mysql的连接办法,没有做过,希望有人能补充上来)。 |