重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
Java 是一種編程語言,它本身的作用是通過編寫應(yīng)用程序,幫助人們解決日常工作、生活和學(xué)習(xí)遇到的問題。
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)大慶免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
一些常見的java功能代碼。如復(fù)制文件夾及文件到指定目錄,遍歷指定盤符所有文件,檢索字符串是否符合指定要求。
數(shù)據(jù)庫里面帖子內(nèi)容的表增加一個瀏覽次數(shù)字段,每次進入一個帖子瀏覽,根據(jù)該帖子的ID號,update該帖子的瀏覽次數(shù)字段,自增1
在回復(fù)按鈕或者HREF上通過action將發(fā)帖人的id和帖子id傳出去,獲取到id來判斷本次回復(fù)是針對那個人發(fā)的哪一個帖子的。
如果有相應(yīng)的api的話,寫個時間函數(shù)輪詢調(diào)用發(fā)帖的方法,發(fā)帖的方法通過設(shè)置api的參數(shù)來實現(xiàn)api;
如果沒有開放的api,只能調(diào)用web上的api的話,那么需要抓取web請求的報文,查看相應(yīng)的參數(shù),來構(gòu)造報文,通過HTTP請求來實現(xiàn)發(fā)帖
參考如下代碼:
MS Access在測試階段比較利于攜帶,Web開發(fā)初期我經(jīng)常使用它。后期再移植到SQLServer或Oracle上。但最近在需要對數(shù)據(jù)庫中插入圖片文件時,發(fā)現(xiàn)了一個問題,即JDK自帶的JDBC-ODBC不支持java.sql.Blob里的方法,經(jīng)過查閱Java API和程序調(diào)試,我找到了個變通的方法,即:
1,在寫入BLOB類型字段時,使用java.sql.PreparedStatement的setBinaryStream方法,
2,讀出BLOB類型字段時,因為返回的是字節(jié)數(shù)組byte[]類型,可以把它轉(zhuǎn)換成ByteArrayInputStream然后讀出內(nèi)容寫到文件里去。
這樣即使用JDK自帶的JDBC-ODBC驅(qū)動, 也能自如的在數(shù)據(jù)庫里讀寫上傳下載的文件了,哈哈。
import java.sql.*;
import java.io.*;
//對BLOB字段先寫入(要求被寫入的文件存在),再讀出來
//要求先建立一個item表,有三個字段,id(int),file_name(char),file_blob(blob)
//對Access, blob字段應(yīng)該設(shè)置成為“OLE對象”類型
public class blobtest{
public static void main(String[] args){
Connection conn = null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
/*這里的數(shù)據(jù)庫的url一定要寫正確,這是關(guān)鍵,其中DBQ可以絕對路徑,也可以是相對路徑,為了體現(xiàn)數(shù)據(jù)存儲路徑的/獨立性,你可以將數(shù)據(jù)庫copy到不同的位試一下*/
String dbUrl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=blob.mdb";
conn = DriverManager.getConnection(dbUrl,"","");
File file1=new File("fileToWrite.doc");
File file2=new File("fileRead.doc");
//BlobWriteForOracle( conn, file1);
//BlobReadForOracle( conn, file2);
BlobWriteForAccess( conn, file1);
BlobReadForAccess( conn, file2);
conn.close();
}catch(Exception ex){
System.err.println(ex.getMessage());
public static void BlobWriteForAccess( Connection conn, File file){
try{
conn.setAutoCommit(false); // 取消Connection對象的auto commit屬性
String file_name=file.getName();
// get maxid ( to avoid insert id repeatly )
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select max(id) from item");
rs.next();
int maxid = rs.getInt(1);
//maxid = (maxid==null)?0:maxid;
int id = maxid+1 ;
//System.out.println("write_id="+id);
PreparedStatement pstmt = conn.prepareStatement( "insert into item ( id, file_name, file_blob ) values ( " + id + ", ? , ? )" );
FileInputStream in = new FileInputStream(file );
int length = in.available();
pstmt.setString( 1, file_name );
pstmt.setBinaryStream( 2, in , in.available() );
System.out.println( "插入了 "+ pstmt.executeUpdate ()+ " 行數(shù)據(jù), "
+ "id =" + id
+ ", 文件名是" + file.toString() +" , 共 "+ length +" bytes" );
conn.commit();
pstmt.close();
}catch(Exception ex){
ex.printStackTrace();
System.out.print("["+ex.getMessage()+"]");
try{
conn.rollback();
}catch(SQLException sqle){
System.err.println(sqle.getMessage());
}
}
public static void BlobReadForAccess( Connection conn, File file){
try{
conn.setAutoCommit(false); // 取消Connection對象的auto commit屬性
String file_name=file.getName();
// get maxid ( to avoid insert id repeatly )
Statement stmt1 = conn.createStatement();
ResultSet rs1 = stmt1.executeQuery("select max(id) from item");
rs1.next();
int maxid = rs1.getInt(1);
//maxid = (maxid==null)?0:maxid;
int id = maxid;
//System.out.println("read_id="+id);
String sql="SELECT file_blob FROM item WHERE id=" + id + ""; //
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
rs.next();
Object obj1 = rs.getObject("file_blob"); // 得到BLOB對象
//System.out.println("type is :"+obj1.getClass().getName());
byte[] blob=(byte[])obj1;
FileOutputStream out=new FileOutputStream(file); // 建立輸出流
ByteArrayInputStream in=new ByteArrayInputStream(blob); // 建立輸入流
int size=1024;
byte[] buffer=new byte[size]; // 建立緩沖區(qū)
int len;
while((len=in.read(buffer)) != -1)
out.write(buffer,0,len);
in.close();
out.close();
conn.commit();
}catch(Exception ex){
ex.printStackTrace();
System.out.print("["+ex.getMessage()+"]");
try{
conn.rollback();
}catch(SQLException sqle){
System.err.println(sqle.getMessage());
}