第二種,JavaBean的形式。
package conn; //導(dǎo)入包
import java.sql.*; //導(dǎo)入數(shù)據(jù)庫操作的類
public class DBConnAccess //構(gòu)造方法,初始化
{
private
Connection conn; //連接對象
private
Statement stmt; //語句對象
private
ResultSet rs; //結(jié)果集對象
private
String accessdriver; //保存Access驅(qū)動程序字符串
private
String accessURL; //保存Access連接字符串
public
DBConnAccess()
{
//Access驅(qū)動程序
accessdriver = "sun.jdbc.odbc.JdbcOdbcDriver";
//連接字符串
accessURL = "jdbc:odbc:Driver={Microsoft Access Driver
(*.mdb)};DBQ=";
conn
= null;
}
//該方法從參數(shù)得到數(shù)據(jù)庫路徑,并加到連接字符串后面,然后再建立連接
public
Connection getConnToAccess(String dbpath){
try{
accessURL=accessURL+dbpath;
Class.forName(accessdriver);
conn = DriverManager.getConnection(accessURL);
}catch(Exception e){
System.out.println("操作數(shù)據(jù)庫出錯,請仔細(xì)檢查");
System.err.println(e.getMessage());
}
return conn;
}
//關(guān)閉數(shù)據(jù)庫連接
public
void close()
{
try{
//rs.close();
//stmt.close();
conn.close();
}catch(SQLException sqlexception){
sqlexception.printStackTrace();
}
}
}
調(diào)用方法如下: 程序代碼
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312">
<%@ page contentType="text/html;
charset=gb2312" language="java"
import="java.sql.*" %>
<jsp:useBean id="DBConn" scope="page"
class="conn.DBConnAccess"/>
<% //連接Access 數(shù)據(jù)庫
String
dbpath="data/test.mdb"; //數(shù)據(jù)庫的路徑,請自行修改
Connection conn=DBConn.getConnToAccess(application.getRealPath(dbpath));
Statement
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String
sql="select * from username order by id";
//String
sql1="insert into username (uid,pwd) values('wsp','wsp')";
//stmt.executeUpdate(sql1);
ResultSet
rs=stmt.executeQuery(sql);
while(rs.next()){
out.print("用戶名:");
out.print(rs.getString("uid")+" 密碼:");
out.println(rs.getString("pwd")+"<br>");
}
DBConn.close();
%>
第一種,jsp頁面連接
<%@ page contentType="text/html;
charset=gb2312" language="java"
import="java.sql.*"%>
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312">
<%
//
******* 數(shù)據(jù)庫連接代碼 開始 *****
//異常處理語句
try
{ //以下幾項(xiàng)請自行修改
String spath = "data/test.mdb";//Access 數(shù)據(jù)庫路徑
String dbpath = application.getRealPath(spath);//轉(zhuǎn)化成物理路徑
String dbname = "";
//Acvess 數(shù)據(jù)庫用戶名,沒有則為空
String user = "";
//Access 數(shù)據(jù)庫密碼,沒有則為空
//數(shù)據(jù)庫連接字符串
String url ="jdbc:odbc:Driver={Microsoft Access Driver
(*.mdb)};DBQ="+dbpath;
//加載驅(qū)動程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//建立連接
Connection conn= DriverManager.getConnection(url);
//創(chuàng)建語句對象
Statement
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//
**** 數(shù)據(jù)庫連接代碼 結(jié)束
******
//********* 測試數(shù)據(jù)代碼開始 ******
//請?jiān)跀?shù)據(jù)庫中建立username表,表中建立兩個字段uid和pwd,類型為文本型
String sql = "select * from username";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
{ out.print("用戶名:" + rs.getString("uid"));
out.print(" 密碼:" + rs.getString("pwd") + "<br>");
}
out.print("<br>恭喜你!數(shù)據(jù)庫連接成功!");
rs.close(); //關(guān)閉記錄集對象
stmt.close(); //關(guān)閉語句對象
conn.close(); //關(guān)閉連接對象
}catch(Exception e){
out.print("數(shù)據(jù)庫連接錯誤!,錯誤信息如下:<br>");
out.print(e.getMessage());
} //******* 測試數(shù)據(jù)代碼結(jié)束 *******
%>
jsp連接SQLServer數(shù)據(jù)庫的代碼
要正確的使用這段代碼,你需要首先在SQLServer數(shù)據(jù)庫里創(chuàng)建一username表,表里面創(chuàng)建兩個字符型的字段,字段名分別為:uid,pwd,然后插入幾條測試數(shù)據(jù)。
歡迎各位提出改進(jìn)的意見。
以下用兩種方式來實(shí)現(xiàn)jsp連接SQLServer數(shù)據(jù)庫。
第一種JSP形式。 程序代碼
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312">
<%@ page contentType="text/html;
charset=gb2312" language="java"
import="java.sql.*"%>
<%
/*********************
********* JDBC_ODBC連接 SQL Server 數(shù)據(jù)庫,不需要設(shè)置數(shù)據(jù)源
********* Date: 2005.8
********* Email:fanwsp@126.com
********* Author: DreamTime [夢想年華]
********* 有任何歡迎提出指正
****************************/
//請根據(jù)需要,選擇一種方法,去掉相應(yīng)的方法的注釋,并注釋其它沒有使用的
//以下幾項(xiàng)請自行修改
String
server="localhost";
//SQL Server 服務(wù)器的地址
String
dbname="test"; //SQL
Server 數(shù)據(jù)庫的名字
String
user="sa"; //SQL
Server 數(shù)據(jù)庫的登錄用戶名
String
pass="chfanwsp";
//SQL Server 數(shù)據(jù)庫的登錄密碼
String
port="1433";
//SQL Server 服務(wù)器的端口號,默認(rèn)為1433
/*****
方法1: *******
* 用net.sourceforge.jtds.jdbc.Driver
* (http://jtds.sourceforge.net/) *
* 在Win2003Server上安裝SQLSERVER2000,必須安裝補(bǔ)丁sp3 *
*************************/
//
*******數(shù)據(jù)庫連接代碼 開始
*******
//數(shù)據(jù)庫連接字符串
String
url="jdbc:jtds:sqlserver://"+server+":"+port+"/"+dbname+";USER="+user+";PASSWORD="+pass+"";
//加載驅(qū)動程序
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
//建立連接
Connection conn= DriverManager.getConnection(url);
//創(chuàng)建語句對象
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//
**** 數(shù)據(jù)庫連接代碼 結(jié)束
*********
/********** 方法2:
*******
************* 用微軟提供的JDBC驅(qū)動程序
*******
*******************************************
*在Win2003 Server上安裝SQLSERVER2000,必須安裝補(bǔ)丁sp3
***************************/
//
****************** 數(shù)據(jù)庫連接代碼 開始
******************
/*
String
url="jdbc:microsoft:sqlserver://"+server+":"+port+";DatabaseName="+dbname+";
USER="+user+";PASSWORD="+pass+"";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection conn= DriverManager.getConnection(url);
Statement
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
*/
//
**** 數(shù)據(jù)庫連接代碼 結(jié)束
*********
/********** 方法3: ****************
************* 用JDBC-ODBC橋驅(qū)動程序 *********
***********************************
* 在Win2003 Server上安裝SQLSERVER2000,可能需要安裝補(bǔ)丁sp3*
***************************/
//
********* 數(shù)據(jù)庫連接代碼 開始 ********
/*
String url="jdbc:odbc:Driver={SQL
Server};server="+server+";uid="+user+";pwd="+pass+";database="+dbname+"";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection conn= DriverManager.getConnection(url);
Statement
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
*/
//
**** 數(shù)據(jù)庫連接代碼 結(jié)束
*********
String
sql="select * from username";
ResultSet
rs=stmt.executeQuery(sql);
//rs.first();
while(rs.next()){
out.print("用戶名:");
out.print(rs.getString("uid")+" 密碼:");
out.println(rs.getString("pwd")+"<br>");
}
rs.close();
stmt.close();
conn.close();
%>
第二種方式,用JavaBean來實(shí)現(xiàn)。請看代碼:
DBConnSql.java
編譯以后的Class文件應(yīng)該放在 WEB-INF\classes\conn目錄下。
程序代碼
/*
******* java連接SQL Server數(shù)據(jù)庫代碼 *************
*******
使用Jdbc連接 *************
*/
package conn; //導(dǎo)入包
import java.sql.*; //導(dǎo)入數(shù)據(jù)庫操作的類
public class DBConnSql //構(gòu)造方法,初始化
{
private
Connection conn; //連接對象
private
Statement stmt; //語句對象
private
ResultSet rs; //結(jié)果集對象
private
String sqldriver; //SQL Server驅(qū)動程序字符串
private
String sqlURL; //SQL
Server連接字符串
/********** 方法1: *********
* 用net.sourceforge.jtds.jdbc.Driver ************
* (http://jtds.sourceforge.net/)
* 在Win2003Server上安裝SQLSERVER2000,必須安裝補(bǔ)丁sp3
*
* 該方法取得連接所需各種參數(shù),組成連接字符串,然后再建立連接
* server;dbname,user,pass,port
* 分別表示SQL Server 服務(wù)器的地址,數(shù)據(jù)庫,用戶名,密碼,端口
*****************************/
public Connection getConnToSql1(String server,String dbname,String
user,String pass,String port){
//SQL Server驅(qū)動程序,用net.sourceforge.jtds.jdbc.Driver
sqldriver = "net.sourceforge.jtds.jdbc.Driver";
sqlURL = "jdbc:jtds:sqlserver://"; //連接字符串一部分
try{
//完整的連接字符串
sqlURL
=sqlURL+server+":"+port+"/"+dbname+";USER="+user+";PASSWORD="+pass+"";
Class.forName(sqldriver);
conn = DriverManager.getConnection(sqlURL);
}catch(Exception e){
System.out.println("操作數(shù)據(jù)庫出錯,請仔細(xì)檢查");
System.err.println(e.getMessage());
}
return conn;
}
/********** 方法2: ***************
******* 用微軟提供的JDBC驅(qū)動程序 **************
* 在Win2003 Server上安裝SQLSERVER2000,必須安裝補(bǔ)丁sp3
*
* 該方法取得連接所需各種參數(shù),組成連接字符串,然后再建立連接
*
server;dbname,user,pass,port
* 分別表示SQL Server 服務(wù)器的地址,數(shù)據(jù)庫,用戶名,密碼,端口
********************************/
public Connection getConnToSql2(String server,String dbname,String
user,String pass,String port){
//SQL Server驅(qū)動程序,用微軟提供的JDBC驅(qū)動程序
sqldriver =
"com.microsoft.jdbc.sqlserver.SQLServerDriver";
sqlURL = "jdbc:microsoft:sqlserver://"; //連接字符串一部分
try{
//完整的連接字符串
sqlURL
=sqlURL+server+":"+port+";DatabaseName="+dbname+";USER="+user+";PASSWORD="+pass+"";
Class.forName(sqldriver);
conn = DriverManager.getConnection(sqlURL);
}catch(Exception e){
System.out.println("操作數(shù)據(jù)庫出錯,請仔細(xì)檢查");
System.err.println(e.getMessage());
}
return conn;
}
/********** 方法3: **************
************* 用JDBC-ODBC橋驅(qū)動程序 **********
* 在Win2003 Server上安裝SQLSERVER2000,可能需要安裝補(bǔ)丁sp3
*
* 該方法取得連接所需各種參數(shù),組成連接字符串,然后再建立連接
* server;dbname,user,pass,port
* 分別表示SQL Server 服務(wù)器的地址,數(shù)據(jù)庫,用戶名,密碼,端口
**********************************************/
public Connection getConnToSql3(String server,String dbname,String
user,String pass,String port){
//SQL
Server驅(qū)動程序,用微軟提供的JDBC驅(qū)動程序
sqldriver = "sun.jdbc.odbc.JdbcOdbcDriver";
sqlURL = "jdbc:odbc:Driver={SQL Server};"; //連接字符串一部分
try{
//完整的連接字符串
sqlURL
=sqlURL+"server="+server+";uid="+user+";pwd="+pass+";database="+dbname+"";
Class.forName(sqldriver);
conn = DriverManager.getConnection(sqlURL);
}catch(Exception e){
System.out.println("操作數(shù)據(jù)庫出錯,請仔細(xì)檢查");
System.err.println(e.getMessage());
}
return conn;
}
//關(guān)閉數(shù)據(jù)庫連接
public
void close()
{
try{
//rs.close();
//stmt.close();
conn.close();
}catch(SQLException sqlexception){
sqlexception.printStackTrace();
}
}
}
這個文件只是實(shí)現(xiàn)了數(shù)據(jù)庫的連接,下面我們再寫一個測試文件。
就是用sql語句從數(shù)據(jù)庫里查詢出記錄,以驗(yàn)證我們數(shù)據(jù)庫的連接是否成功。
connsql.jsp 文件源代碼如下: 程序代碼
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312">
<%@ page contentType="text/html;
charset=gb2312" language="java"
import="java.sql.*" %>
<jsp:useBean id="DBConn"
scope="page" class="conn.DBConnSql"/>
<%
/***** 說明:本數(shù)據(jù)庫連接一共提供了三種方法:
一、用net.sourceforge.jtds.jdbc.Driver,請調(diào)用getConnToSql1方法。
二、用微軟提供的JDBC驅(qū)動程序,請調(diào)用getConnToSql2方法。
三、用JDBC-ODBC橋驅(qū)動程序連接,請調(diào)用getConnToSql3方法。
本例使用的是第一種方法,調(diào)用getConnToSql1方法。請根據(jù)自己的實(shí)際情況進(jìn)行修改
如果是第二種方法請把 Connection conn=DBConn.getConnToSql1(server,dbname,user,pass);
里面語句改為:
Connection conn=DBConn.getConnToSql2(server,dbname,user,pass);
其它類此。
*****************************************************/
//連接 SQL Server 數(shù)據(jù)庫所需各種參數(shù),請自行修改
String
server="localhost";
//SQL Server 服務(wù)器的地址
String
dbname="test"; //SQL
Server 數(shù)據(jù)庫的名字
String
user="sa"; //SQL
Server 數(shù)據(jù)庫的登錄用戶名
String
pass="chfanwsp";
//SQL Server 數(shù)據(jù)庫的登錄密碼
String
port ="1433"; //SQL
Server 服務(wù)器的端口號,默認(rèn)為1433
Connection
conn=DBConn.getConnToSql3(server,dbname,user,pass,port);
Statement
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String
sql="select * from username order by id";
String
sql1="insert into username (uid,pwd) values('wsp','wsp')";
//stmt.executeUpdate(sql1);
ResultSet
rs=stmt.executeQuery(sql);
while(rs.next()){
out.print("用戶名:");
out.print(rs.getString("uid")+" 密碼:");
out.println(rs.getString("pwd")+"<br>");
}
rs.close();
stmt.close();
conn.close();
//DBConn.close();
Java實(shí)現(xiàn)文件操作:
一個用java實(shí)現(xiàn)對文件的操作。完成了如創(chuàng)建目錄及文件,復(fù)制目錄及文件以及刪除等功能。
主要用到了java的File類,FileInputStream類,FileOutputStream,FileWriter,PrintWriter,InputStream,OutputStream ,BufferedReader和FileReader等相關(guān)類。
程序在某些方的實(shí)現(xiàn)可能存在一些問題,歡迎各位提出指正。
程序代碼
package file;
import java.io.*;
public class FileClass {
//private
String sFileName;
//private
String sFolderName;
String
sPath;
String
sFilePath;
String
sContent;
/********************
* 新建目錄
*******************/
public boolean newFolder(String s)
{
sPath = s;
sPath = sPath.toString();//中文轉(zhuǎn)換
//創(chuàng)建一個File(文件)對象
File myFilePath = new File(sPath);
if(!myFilePath.exists())
{
try
{
myFilePath.mkdirs();
return true;
}catch(Exception e)
{
e.printStackTrace();
return false;
}
}
else return false;
}
/********************
* 新建文件
*******************/
public boolean newFile(String s1,String s2)
{
sFilePath = s1;
sContent = s2;
sFilePath = sFilePath.toString();
File myFilePath = new File(sFilePath);
if(!myFilePath.exists())
{
try
{
myFilePath.createNewFile();
FileWriter resultFile=new FileWriter(myFilePath);
PrintWriter myFile=new PrintWriter(resultFile);
String sContent = s2.toString();
myFile.println(sContent);
myFile.close();
resultFile.close();
return true;
}catch(Exception e)
{
e.printStackTrace();
return false;
}
}
else return false;
}
/********************
* 刪除文件
*******************/
public boolean delFile(String s)
{
sFilePath = s;
sFilePath = sFilePath.toString();
File
dFile = new File(sFilePath);
if(dFile.exists())
{
try
{
dFile.delete();
return true;
}catch(Exception e)
{
e.printStackTrace();
return false;
}
}
else
{
System.out.print("文件:" + s + "不存在!");
return false;
}
}
/********************
* 復(fù)制文件
*******************/
public boolean copyFile(String s1,String s2)
{
int bytesum=0;
int byteread=0;
//file:讀到流中
try
{
InputStream inStream=new FileInputStream(s1);
FileOutputStream fs=new FileOutputStream(s2);
byte[] buffer =new byte[1444];
while ((byteread=inStream.read(buffer))!=-1)
{
System.out.println("--
"+byteread+" --");
bytesum+=byteread;
System.out.println(bytesum);
fs.write(buffer,0,byteread);
}
inStream.close();
fs.close();
return true;
}catch(Exception e)
{
return false;
}
}
/********************
* 復(fù)制文件夾
*******************/
public boolean copyFolder(String s1,String s2)
{
try{
(new File(s2)).mkdirs();
File[] file=(new File(s1)).listFiles();
for(int i=0;i<file.length;i++)
{
if(file[i].isFile()){
file[i].toString();
FileInputStream input=new
FileInputStream(file[i]);
FileOutputStream output=new
FileOutputStream(s2+"/"+(file[i].getName()).toString());
byte[] b=new byte[1024*5];
int len;
while((len=input.read(b))!=-1){
output.write(b,0,len);
}
output.flush();
output.close();
input.close();
}
}
return true;
}catch(IOException e){
e.printStackTrace();
return false;
}
}
/********************
* 得到文本文件的內(nèi)容
*******************/
public String getFile(String s1)
{
try{
StringBuffer sb = new StringBuffer();
BufferedReader in = new BufferedReader(new FileReader(s1));
while(in.readLine()!=null){
sb.append(in.readLine()+"\n\r");
}
return sb.toString();
}catch(IOException e){
e.printStackTrace();
return null;
}
}
/**
* @param
args
*/
public
static void main(String[] args) {
//
TODO 自動生成方法存根
String s1="";
String s2="";
FileClass file1 = new FileClass();
//目錄創(chuàng)建測試
s2="F:/Test/Test1";
if
(file1.newFolder(s2))
System.out.println("創(chuàng)建目錄 " + s2 + " 成功!");
else
System.out.println("創(chuàng)建目錄 " + s2 + " 失敗!!");
//文件創(chuàng)建測試
s1="F:/Test/Test1/Test.txt";
s2="這是一個測試文件!";
file1.delFile(s1);
if
(file1.newFile(s1,s2))
System.out.println("創(chuàng)建文件 " + s1 + " 成功!");
else
System.out.println("創(chuàng)建文件 " + s1 + " 失敗!!");
System.out.print("\n"+s2);
//文件刪除測試
s1="F:/Test/Test1/Test.txt";
if
(file1.delFile(s1))
System.out.println("刪除文件 " + s1 + " 成功!");
else
System.out.println("刪除文件 " + s1 + " 失敗!!");
//復(fù)制文件測試
s1="F:/Test/Test1/Test.txt";
s2="F:/Test/Test1/Test1.txt";
if
(file1.copyFile(s1,s2))
System.out.print("把文件 "+s1+"成功復(fù)制到 "+s2);
else
System.out.print("復(fù)制文件失敗!");
//復(fù)制目錄測試
s1="F:/Test/Test1";
s2="F:/Test/Test2";
if
(file1.copyFolder(s1,s2))
System.out.print("把文件夾 "+s1+" 成功復(fù)制到文件夾 "+s2);
else
System.out.print("復(fù)制文件夾失敗!");
//得到文件內(nèi)容測試
System.out.print(file1.getFile("F:/Test/Test1/Test1.txt"));
}
}
沒有所謂的命運(yùn),只有不同的選擇!