這幾天做項(xiàng)目,需要做一個(gè)類似于控制臺(tái)的界面,可以將日志回顯到一個(gè)文本區(qū)域里,幾經(jīng)查找,反復(fù)測(cè)試寫了以下測(cè)試代碼。
這是log4j.properties的配置內(nèi)容
log4j.rootCategory= ,WriterAppender

log4j.appender.WriterAppender=org.apache.log4j.WriterAppender
log4j.appender.WriterAppender.Threshold=debug
log4j.appender.WriterAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.WriterAppender.layout.ConversionPattern=%d{ISO8601} - %p - %m%n
主程序
import java.io.PipedReader;
import java.io.PipedWriter;
import java.io.Writer;

import org.apache.log4j.Appender;
import org.apache.log4j.Logger;
import org.apache.log4j.WriterAppender;

public class Log4jMain {
static public Logger logger = Logger.getLogger(Log4jMain.class);

public static void main(String[] arg) {
Logger root = Logger.getRootLogger();
try {
Appender appender = root.getAppender("WriterAppender");
PipedReader reader = new PipedReader();
Writer writer = new PipedWriter( reader) ;
((WriterAppender) appender).setWriter(writer);
Thread t = new AaaThread(reader);
t.start();
Logger logger = Logger.getLogger(Log4jMain.class);
logger.error("asdf");
logger.info("asdf");
logger.debug("asdf");
logger.fatal("asdf");
//hh是一個(gè)class,test方法里只有幾個(gè)logger.info("aaa"),用于測(cè)試用,這東西可以去掉
new HH().test();

} catch (Exception e) {
}

}
}
因?yàn)閘og4j提供的是 Writer,所以通過使用PipedWriter連接到PipedReader,并通過一個(gè)thread來處理PipedReader的數(shù)據(jù)就可以回顯了。如果你需要的話可以將下面的System.out.println(scanner.nextLine());改成你需要顯示的地方就行了。
import java.io.PipedReader;
import java.util.Scanner;

public class AaaThread extends Thread {
PipedReader reader;

public AaaThread(PipedReader reader) {
this.reader = reader;
}

public void run() {
Scanner scanner = new Scanner(reader);
while (scanner.hasNext()) {
System.out.println(scanner.nextLine());
}
}
}
這里制作一個(gè)引子,具體內(nèi)容比較多,而且hibernate文檔里的hql篇寫的很詳細(xì)
可以這么用:
List list = getHibernateTemplate().find("select new map(t1.c1,t2.c3) from table1 t1 ,table2 t2 where t1.c1=t2.c2");
這樣的話list里的每個(gè)元素都是一個(gè)map,每個(gè)map里包含兩個(gè)元素
注意:這里的table1和table2都是class名并不是真的表名,畢竟這是hql。除了可以用map還還支持list和自定義的bean。
DB2的Type-4驅(qū)動(dòng)真的很詭異,配了兩天沒配上,發(fā)現(xiàn)是多引了一個(gè)包。就是他----“db2java.zip(db2java.jar)”只要有了他就算你已經(jīng)引入了db2jcc.jar、db2jcc_license_cisuz.jar、db2jcc_license_cu.jar也沒用。
不知道怎么回事,本以為多引就沒錯(cuò),沒想到載這了。
順便吧db2 type-4的配置方法貼下面:
jdbc:db2://ip:port/數(shù)據(jù)庫(kù)
驅(qū)動(dòng)名:com.ibm.db2.jcc.DB2Driver
我日他IBM!該死的IBM,我算是服了,配好的type-4驅(qū)動(dòng)中文數(shù)據(jù)顯示的全是亂碼,準(zhǔn)備切到type-2上試試,結(jié)構(gòu)還是不行,查來查去是數(shù)據(jù)庫(kù)pagecode的事,數(shù)據(jù)庫(kù)的字符集改成gbk,客戶端的pagecode也改成跟數(shù)據(jù)庫(kù)一樣的,ODBC算是能用了,type-2也能用了,然后又用type-4一試!連不上了!說字符集不匹配,上網(wǎng)一查說要使用IBM專用的JDK,我日了,換了IBM的JDK,配好環(huán)境變量eclipse又不能用了!我算是被IBM搞死了,一氣之下也不準(zhǔn)備再嘗試type-4了。
我這里用的IBM JDK1.4,db2 V8
1、網(wǎng)絡(luò)不通
2、端口占用
3、防火墻(客戶端機(jī)器的防火墻和服務(wù)器端的防火墻都有可能)
4、服務(wù)器端所在機(jī)器安裝了linux虛擬機(jī),或者使用的linux或者unix系統(tǒng)
排除辦法:
前三種情況都很好解決,主要是最后一個(gè),需要在rmi服務(wù)啟動(dòng)時(shí)加上一句
java -Djava.rmi.server.hostname=localhost ……
其中l(wèi)ocalhost可以強(qiáng)制定義為機(jī)器的IP地址
為了滿足將plugin工程打成jar包,但是spring的配置文件不打進(jìn)jar包的需求。很多時(shí)候我們?yōu)榱丝梢苑奖闶止づ渲胹pring的一些信息,而不用將jar解壓而從新壓縮,我們需要把Spring的配置文件放在plugin的jar包外這時(shí),如果沒有正確的使用spring的Resource就不能加載spring的配置文件,經(jīng)過多次嘗試終于找到一個(gè)比較合適的方法,與大家交流。
public static BeanFactory getFactory() {
if (factory == null) {
FileSystemResource resource = new FileSystemResource("appcontextclient.xml");
factory = new XmlBeanFactory(resource);
}
return factory;

}
將appcontextclient.xml文件放到工程根目錄下,發(fā)布時(shí)將appcontextclient.xml放入到你的eclipse的安裝目錄即可(與eclipse的exe執(zhí)行文件相同的位置),如果需要可在appcontextclient.xml文件前加入相關(guān)的路徑來更改你的目錄(但是有可能在調(diào)試過程中必須要把a(bǔ)ppcontextclient.xml文件放到你的eclipse IDE的安裝目錄里,因?yàn)榇蟛糠謺r(shí)間我們的eclipse IDE是何 workspace分開存放的,這樣我們?cè)谡{(diào)試的時(shí)候非常別扭,要到IDE里去修改配置文件)。
以上方法并不是唯一的,只是我感覺用起來比較合適的,這樣在調(diào)試時(shí)既可以保證appcontextclient.xml文件在工程目錄范圍內(nèi),有可以在發(fā)布時(shí)使文件保持在安裝目錄而不是運(yùn)行環(huán)境的workspace的臨時(shí)目錄里。
同時(shí)介紹幾個(gè)方法可以eclipse方法獲得eclipse工具的幾個(gè)重要路徑(注:"IDE"為我的plugin工程的PLUGIN_ID)
Platform.getInstallLocation().getURL()
file:/F:/tools/java/eclipse/eclipse-SDK-3.3-win32/eclipse/
這是我的eclipse IDE的安裝目錄
Platform.getLocation()
D:/runtime-IDE.product
這是我調(diào)試插件時(shí)生成的臨時(shí)運(yùn)行環(huán)境目錄,是在調(diào)試IDE工程時(shí)生成的,就是發(fā)布時(shí)插件所屬eclipse運(yùn)行環(huán)境的WorkSpace目錄
Platform.getInstanceLocation().getURL()
file:/D:/runtime-IDE.product/
這個(gè)跟上面的一樣
Platform.getLocation()
D:/runtime-IDE.product
這個(gè)跟上面的也一樣
Platform.getLogFileLocation()
D:/runtime-IDE.product/.metadata/.log
運(yùn)行環(huán)境的日志文件路徑,發(fā)布時(shí)插件所屬eclipse運(yùn)行環(huán)境的WorkSpace目錄下的/.metadata/.log
Platform.getStateLocation(Platform.getBundle("IDE"))
D:/runtime-IDE.product/.metadata/.plugins/IDE
運(yùn)行環(huán)境中IDE的一個(gè)臨時(shí)目錄,發(fā)布時(shí)插件所屬eclipse運(yùn)行環(huán)境的WorkSpace目錄下/.metadata/.plugins/IDE
Platform.getUserLocation()
file:/C:/Documents and Settings/XX/user
這是我的文檔的路徑(把用戶名X掉,哈哈)
Platform.getBundle("IDE").getLocation()
update@D:/WorkSpace/IDE/
我的IDE工程的路徑,對(duì)應(yīng)發(fā)布時(shí)插件的jar本身,在這個(gè)目錄下的文件將全部包含在發(fā)不得jar里。
Platform.getConfigurationLocation().getURL()
file:/D:/WorkSpace/.metadata/.plugins/org.eclipse.pde.core/IDE.product/
eclipse IDE 自己建的目錄
eclipse 本身也有很多加載資源文件的方法可以在org.eclipse.core.runtime.Platform這個(gè)類里找到,具體的就請(qǐng)大家找找API吧 應(yīng)要求在此提供ibatis批量插入demo下載,謝謝大家的關(guān)注,不過對(duì)于一些人的不禮貌行為我非常痛心。由于工作地點(diǎn)不能上網(wǎng),不能上網(wǎng),不能及時(shí)回復(fù)大家的留言我深表道歉。下載 此問題網(wǎng)上大部分解決方法是這樣的:
1.網(wǎng)上鄰居->本地連接->屬性->internet協(xié)議(TCP/IP)->屬性->高級(jí)->wins標(biāo)簽->去掉啟用LMhosts查詢前的勾.
2.控制面版->windows防火墻->高級(jí)標(biāo)簽->本地連接設(shè)置->服務(wù)的標(biāo)簽里勾選安全Web服務(wù)器(HTTPS)即可
但是我的機(jī)器按照上面操作apache服務(wù)仍然不可以使用,于是索性將服務(wù)中的Windows Firewall/Internet Connection Sharing (ICS的服務(wù)關(guān)掉了,發(fā)現(xiàn)問題解決了,apache可以用了。對(duì)于安全問題可以選擇第3方的防火墻來解決。
注意:費(fèi)爾防火墻好像和apache沖突,也會(huì)導(dǎo)致WSASocket failed to open the inherited socket 今天用sun的jdk調(diào)的沒有一點(diǎn)問題的數(shù)據(jù)抽取程序,方放到AIX上后不能用了,oralce報(bào)出向一個(gè)字段中插入了過長(zhǎng)的數(shù)據(jù),可是程序在幾天前還是沒有問題的,后來分析可能是字符集導(dǎo)致的,因?yàn)榍皫滋煨薷倪^informix數(shù)據(jù)庫(kù)的字符集由8859-1轉(zhuǎn)為了zh_cn.gb18030-2000,但解決過程異常艱難,后來吧informix的url改為<value>jdbc:informix-sqli://xx.xx.xx.xx:8888/XXXX:informixserver=whcspdev;DB_LOCALE=zh_cn.gb18030-2000;CLIENT_LOCALE=zh_cn.UTF8(原為zh_cn.gb18030-2000);NEWCODESET=gb18030,gb18030-2000,5488,utf8</value>就可以了。后來猜測(cè)了一下原因:
1、oracle數(shù)據(jù)庫(kù)的jdbc驅(qū)動(dòng)是是自動(dòng)將數(shù)據(jù)庫(kù)的數(shù)據(jù)轉(zhuǎn)為unicode格式,這可能跟java的String默認(rèn)為unicode有關(guān),為了讓大家方便操作,
2、sun jdk的String在初始時(shí)用的是Unicode格式,ibm的jdk應(yīng)該也是,但是有一點(diǎn),sun的jdk在通過informix jdbc驅(qū)動(dòng)取數(shù)據(jù)時(shí)不會(huì)將數(shù)據(jù)轉(zhuǎn)成其他字符集,而是仍然使用Unicode,而IBM的則是通過CLIENT_LOCALE=zh_cn.gb18030-2000配置將數(shù)據(jù)格式轉(zhuǎn)為了zh_cn.gb18030-2000。
所以在oracle作insert的時(shí)候就會(huì)由于字符集不匹配而報(bào)錯(cuò)
protected TextViewer textViewer;
protected TextViewerUndoManager undoManager;
//20是保存記錄的數(shù)量。
undoManager = new TextViewerUndoManager(20);
//綁定對(duì)textViewer控件的數(shù)據(jù)進(jìn)行管理
undoManager.connect(textViewer);
textViewer.setUndoManager(undoManager);

StyledText styledText = textViewer.getTextWidget();

styledText.addKeyListener(new KeyListener( )
{
public void keyPressed( KeyEvent e )

{
if ( isUndoKeyPress( e ) )

{
textViewer.doOperation( ITextOperationTarget.UNDO );
}
else if ( isRedoKeyPress( e ) )

{
textViewer.doOperation( ITextOperationTarget.REDO );
}
}
private boolean isUndoKeyPress( KeyEvent e )

{
// CTRL + z
return ( ( e.stateMask & SWT.CONTROL ) > 0 )
&& ( ( e.keyCode == 'z' ) || ( e.keyCode == 'Z' ) );
}
private boolean isRedoKeyPress( KeyEvent e )

{
// CTRL + y
return ( ( e.stateMask & SWT.CONTROL ) > 0 )
&& ( ( e.keyCode == 'y' ) || ( e.keyCode == 'Y' ) );
}
public void keyReleased( KeyEvent e )

{
// do nothing
}
});
到一個(gè)這東西都寫到3了,針對(duì)上回說到30000條數(shù)據(jù)的批量插入工作。30000條數(shù)據(jù)的批量插入在一個(gè)事務(wù)里處理固然是快,但是這只是測(cè)試環(huán)境,30000條數(shù)據(jù)在數(shù)據(jù)庫(kù)的緩存里必然對(duì)數(shù)數(shù)據(jù)庫(kù)的緩存和鎖數(shù)量都是一個(gè)大的挑戰(zhàn),固在新的程序中我們使用了分批事務(wù)提交的方式,這樣為了保持?jǐn)?shù)據(jù)的正確行就只能人為控制數(shù)據(jù)庫(kù)中已被插入的數(shù)據(jù)是否delete掉。另外,使用Batch塊提交會(huì)引發(fā)一個(gè)問題就是,如果batch塊中發(fā)生了異常,我們得不到異常數(shù)據(jù)的行號(hào)即任何信息,所以只能是魚和熊掌不可兼得(我已關(guān)注過insert方法中返回pk的方法了,但好像在batch中他反回不了出錯(cuò)的行號(hào),也許是我沒有找到方法,如有人有好方法請(qǐng)共享一下,在這里表示感謝),大家酌情考慮吧,只能到到自己需要的平衡點(diǎn)了。
建議:如果對(duì)數(shù)據(jù)的準(zhǔn)確性毋庸置疑的話就是用batch處理。如果不能確定準(zhǔn)確性的話,如果對(duì)那條數(shù)據(jù)出錯(cuò)無所謂的話就也可以用batch,但是非要返回出錯(cuò)行號(hào)的話就不要用batch了,直接在外面套用一個(gè)事務(wù),然后try catch一下,處理一下行號(hào)。 今天發(fā)生了ORA-01461 :can bind a LONG value only for insert into a LONG ...到處查詢發(fā)現(xiàn)是一個(gè)字段中的中文內(nèi)容導(dǎo)致,仔細(xì)分析了一下原因,是因?yàn)閖dk1.5的String類型為utf-16編碼方式,而jdk1.4為utf-8,通過在oracle網(wǎng)上查詢10g的jdbc驅(qū)動(dòng)有兩個(gè)版本,舊版的不持jdk1.5,只支持jdk1.4,通過換jdbc驅(qū)動(dòng)問題解決。

log4j.rootCategory= ,WriterAppender



































//hh是一個(gè)class,test方法里只有幾個(gè)logger.info("aaa"),用于測(cè)試用,這東西可以去掉

























可以這么用:
List list = getHibernateTemplate().find("select new map(t1.c1,t2.c3) from table1 t1 ,table2 t2 where t1.c1=t2.c2");
這樣的話list里的每個(gè)元素都是一個(gè)map,每個(gè)map里包含兩個(gè)元素
注意:這里的table1和table2都是class名并不是真的表名,畢竟這是hql。除了可以用map還還支持list和自定義的bean。
DB2的Type-4驅(qū)動(dòng)真的很詭異,配了兩天沒配上,發(fā)現(xiàn)是多引了一個(gè)包。就是他----“db2java.zip(db2java.jar)”只要有了他就算你已經(jīng)引入了db2jcc.jar、db2jcc_license_cisuz.jar、db2jcc_license_cu.jar也沒用。
不知道怎么回事,本以為多引就沒錯(cuò),沒想到載這了。
順便吧db2 type-4的配置方法貼下面:
jdbc:db2://ip:port/數(shù)據(jù)庫(kù)
驅(qū)動(dòng)名:com.ibm.db2.jcc.DB2Driver
我日他IBM!該死的IBM,我算是服了,配好的type-4驅(qū)動(dòng)中文數(shù)據(jù)顯示的全是亂碼,準(zhǔn)備切到type-2上試試,結(jié)構(gòu)還是不行,查來查去是數(shù)據(jù)庫(kù)pagecode的事,數(shù)據(jù)庫(kù)的字符集改成gbk,客戶端的pagecode也改成跟數(shù)據(jù)庫(kù)一樣的,ODBC算是能用了,type-2也能用了,然后又用type-4一試!連不上了!說字符集不匹配,上網(wǎng)一查說要使用IBM專用的JDK,我日了,換了IBM的JDK,配好環(huán)境變量eclipse又不能用了!我算是被IBM搞死了,一氣之下也不準(zhǔn)備再嘗試type-4了。
我這里用的IBM JDK1.4,db2 V8
近日抽風(fēng),想了解以下java與串口并口通訊的問題,上網(wǎng)查了半天,找到了sun幾年前的一個(gè)破包,comm.jar
2.0版的,遇到一個(gè)比較奇怪的問題,這個(gè)包里的demo程序用cmd可以運(yùn)行,但是用eclipse編譯就不能運(yùn)行,一直以為是dll庫(kù)和配置文件的問題,幾乎將兩個(gè)文件copy到了系統(tǒng)中全部可能出現(xiàn)的地方都沒有解決。百般無奈之下,找到了http://blog.csdn.net/djsl6071/archive/2007/04/25/1583979.aspx這個(gè)博客,下載了rxtx把問題搞定了。 如果RMI客戶端鏈接補(bǔ)上服務(wù)器可能是以下情況導(dǎo)致的:1、網(wǎng)絡(luò)不通
2、端口占用
3、防火墻(客戶端機(jī)器的防火墻和服務(wù)器端的防火墻都有可能)
4、服務(wù)器端所在機(jī)器安裝了linux虛擬機(jī),或者使用的linux或者unix系統(tǒng)
排除辦法:
前三種情況都很好解決,主要是最后一個(gè),需要在rmi服務(wù)啟動(dòng)時(shí)加上一句
java -Djava.rmi.server.hostname=localhost ……
其中l(wèi)ocalhost可以強(qiáng)制定義為機(jī)器的IP地址
為了滿足將plugin工程打成jar包,但是spring的配置文件不打進(jìn)jar包的需求。很多時(shí)候我們?yōu)榱丝梢苑奖闶止づ渲胹pring的一些信息,而不用將jar解壓而從新壓縮,我們需要把Spring的配置文件放在plugin的jar包外這時(shí),如果沒有正確的使用spring的Resource就不能加載spring的配置文件,經(jīng)過多次嘗試終于找到一個(gè)比較合適的方法,與大家交流。








將appcontextclient.xml文件放到工程根目錄下,發(fā)布時(shí)將appcontextclient.xml放入到你的eclipse的安裝目錄即可(與eclipse的exe執(zhí)行文件相同的位置),如果需要可在appcontextclient.xml文件前加入相關(guān)的路徑來更改你的目錄(但是有可能在調(diào)試過程中必須要把a(bǔ)ppcontextclient.xml文件放到你的eclipse IDE的安裝目錄里,因?yàn)榇蟛糠謺r(shí)間我們的eclipse IDE是何 workspace分開存放的,這樣我們?cè)谡{(diào)試的時(shí)候非常別扭,要到IDE里去修改配置文件)。
以上方法并不是唯一的,只是我感覺用起來比較合適的,這樣在調(diào)試時(shí)既可以保證appcontextclient.xml文件在工程目錄范圍內(nèi),有可以在發(fā)布時(shí)使文件保持在安裝目錄而不是運(yùn)行環(huán)境的workspace的臨時(shí)目錄里。
同時(shí)介紹幾個(gè)方法可以eclipse方法獲得eclipse工具的幾個(gè)重要路徑(注:"IDE"為我的plugin工程的PLUGIN_ID)
Platform.getInstallLocation().getURL()
file:/F:/tools/java/eclipse/eclipse-SDK-3.3-win32/eclipse/
這是我的eclipse IDE的安裝目錄
Platform.getLocation()
D:/runtime-IDE.product
這是我調(diào)試插件時(shí)生成的臨時(shí)運(yùn)行環(huán)境目錄,是在調(diào)試IDE工程時(shí)生成的,就是發(fā)布時(shí)插件所屬eclipse運(yùn)行環(huán)境的WorkSpace目錄
Platform.getInstanceLocation().getURL()
file:/D:/runtime-IDE.product/
這個(gè)跟上面的一樣
Platform.getLocation()
D:/runtime-IDE.product
這個(gè)跟上面的也一樣
Platform.getLogFileLocation()
D:/runtime-IDE.product/.metadata/.log
運(yùn)行環(huán)境的日志文件路徑,發(fā)布時(shí)插件所屬eclipse運(yùn)行環(huán)境的WorkSpace目錄下的/.metadata/.log
Platform.getStateLocation(Platform.getBundle("IDE"))
D:/runtime-IDE.product/.metadata/.plugins/IDE
運(yùn)行環(huán)境中IDE的一個(gè)臨時(shí)目錄,發(fā)布時(shí)插件所屬eclipse運(yùn)行環(huán)境的WorkSpace目錄下/.metadata/.plugins/IDE
Platform.getUserLocation()
file:/C:/Documents and Settings/XX/user
這是我的文檔的路徑(把用戶名X掉,哈哈)
Platform.getBundle("IDE").getLocation()
update@D:/WorkSpace/IDE/
我的IDE工程的路徑,對(duì)應(yīng)發(fā)布時(shí)插件的jar本身,在這個(gè)目錄下的文件將全部包含在發(fā)不得jar里。
Platform.getConfigurationLocation().getURL()
file:/D:/WorkSpace/.metadata/.plugins/org.eclipse.pde.core/IDE.product/
eclipse IDE 自己建的目錄
eclipse 本身也有很多加載資源文件的方法可以在org.eclipse.core.runtime.Platform這個(gè)類里找到,具體的就請(qǐng)大家找找API吧 應(yīng)要求在此提供ibatis批量插入demo下載,謝謝大家的關(guān)注,不過對(duì)于一些人的不禮貌行為我非常痛心。由于工作地點(diǎn)不能上網(wǎng),不能上網(wǎng),不能及時(shí)回復(fù)大家的留言我深表道歉。下載 此問題網(wǎng)上大部分解決方法是這樣的:
1.網(wǎng)上鄰居->本地連接->屬性->internet協(xié)議(TCP/IP)->屬性->高級(jí)->wins標(biāo)簽->去掉啟用LMhosts查詢前的勾.
2.控制面版->windows防火墻->高級(jí)標(biāo)簽->本地連接設(shè)置->服務(wù)的標(biāo)簽里勾選安全Web服務(wù)器(HTTPS)即可
但是我的機(jī)器按照上面操作apache服務(wù)仍然不可以使用,于是索性將服務(wù)中的Windows Firewall/Internet Connection Sharing (ICS的服務(wù)關(guān)掉了,發(fā)現(xiàn)問題解決了,apache可以用了。對(duì)于安全問題可以選擇第3方的防火墻來解決。
注意:費(fèi)爾防火墻好像和apache沖突,也會(huì)導(dǎo)致WSASocket failed to open the inherited socket 今天用sun的jdk調(diào)的沒有一點(diǎn)問題的數(shù)據(jù)抽取程序,方放到AIX上后不能用了,oralce報(bào)出向一個(gè)字段中插入了過長(zhǎng)的數(shù)據(jù),可是程序在幾天前還是沒有問題的,后來分析可能是字符集導(dǎo)致的,因?yàn)榍皫滋煨薷倪^informix數(shù)據(jù)庫(kù)的字符集由8859-1轉(zhuǎn)為了zh_cn.gb18030-2000,但解決過程異常艱難,后來吧informix的url改為<value>jdbc:informix-sqli://xx.xx.xx.xx:8888/XXXX:informixserver=whcspdev;DB_LOCALE=zh_cn.gb18030-2000;CLIENT_LOCALE=zh_cn.UTF8(原為zh_cn.gb18030-2000);NEWCODESET=gb18030,gb18030-2000,5488,utf8</value>就可以了。后來猜測(cè)了一下原因:
1、oracle數(shù)據(jù)庫(kù)的jdbc驅(qū)動(dòng)是是自動(dòng)將數(shù)據(jù)庫(kù)的數(shù)據(jù)轉(zhuǎn)為unicode格式,這可能跟java的String默認(rèn)為unicode有關(guān),為了讓大家方便操作,
2、sun jdk的String在初始時(shí)用的是Unicode格式,ibm的jdk應(yīng)該也是,但是有一點(diǎn),sun的jdk在通過informix jdbc驅(qū)動(dòng)取數(shù)據(jù)時(shí)不會(huì)將數(shù)據(jù)轉(zhuǎn)成其他字符集,而是仍然使用Unicode,而IBM的則是通過CLIENT_LOCALE=zh_cn.gb18030-2000配置將數(shù)據(jù)格式轉(zhuǎn)為了zh_cn.gb18030-2000。
所以在oracle作insert的時(shí)候就會(huì)由于字符集不匹配而報(bào)錯(cuò)
前兩天遇到為org.eclipse.jface.text.TextViewer添加undo、redo 并添加Ctrl+z,與Ctrl+y功能這個(gè)問題,搜遍了國(guó)內(nèi)網(wǎng)站,也沒有個(gè)好結(jié)果,終于多天后在一個(gè)國(guó)外的svn服務(wù)器上找到了一段代碼,解決了問題
1、為TextViewer添加TextViewerUndoManager來管理記錄











2、添加Ctrl+z,與Ctrl+y事件












































建議:如果對(duì)數(shù)據(jù)的準(zhǔn)確性毋庸置疑的話就是用batch處理。如果不能確定準(zhǔn)確性的話,如果對(duì)那條數(shù)據(jù)出錯(cuò)無所謂的話就也可以用batch,但是非要返回出錯(cuò)行號(hào)的話就不要用batch了,直接在外面套用一個(gè)事務(wù),然后try catch一下,處理一下行號(hào)。 今天發(fā)生了ORA-01461 :can bind a LONG value only for insert into a LONG ...到處查詢發(fā)現(xiàn)是一個(gè)字段中的中文內(nèi)容導(dǎo)致,仔細(xì)分析了一下原因,是因?yàn)閖dk1.5的String類型為utf-16編碼方式,而jdk1.4為utf-8,通過在oracle網(wǎng)上查詢10g的jdbc驅(qū)動(dòng)有兩個(gè)版本,舊版的不持jdk1.5,只支持jdk1.4,通過換jdbc驅(qū)動(dòng)問題解決。
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 31 | 1 | 2 | |||
3 | 4 | 5 | 6 | 7 | 8 | 9 | |||
10 | 11 | 12 | 13 | 14 | 15 | 16 | |||
17 | 18 | 19 | 20 | 21 | 22 | 23 | |||
24 | 25 | 26 | 27 | 28 | 29 | 30 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
常用鏈接
留言簿(2)
隨筆分類
隨筆檔案
- 2008年6月 (1)
- 2008年4月 (3)
- 2008年2月 (1)
- 2008年1月 (1)
- 2007年12月 (1)
- 2007年10月 (1)
- 2007年7月 (2)
- 2007年6月 (2)
- 2007年5月 (1)
- 2007年4月 (6)
- 2007年2月 (1)
- 2007年1月 (4)
- 2006年11月 (1)
- 2006年10月 (1)
- 2006年9月 (5)
framework
j2me
java
linux
web
其他
友情鏈接
- 我的旅游筆記
- 我的旅游筆記
素材
最新評(píng)論

- 1.?re: 為org.eclipse.jface.text.TextViewer添加undo、redo 并添加Ctrl+z,與Ctrl+y功能
- 找到原因了,必須加textViewer.setDocument(new Document());才好使
- --yumin_999@163.com
- 2.?re: 為org.eclipse.jface.text.TextViewer添加undo、redo 并添加Ctrl+z,與Ctrl+y功能
- 反復(fù)測(cè)試,還是不好使,奇怪。yumin_999@163.com
- --yumin_999@163.com
- 3.?re: ibatis批量代碼
- 這個(gè)能事物回滾嗎?我也是這樣子寫的 但是事物沒有回滾 不知道什么怎么回事
- --pes
- 4.?re: Spring+ibatis批量處理心得3
- 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
- --孫繼超
- 5.?re: DB2的jdbc type-4驅(qū)動(dòng)
-
您好 ,我也遇到了像您一樣的問題,我的qq是178147633,能幫幫我嗎?
我也是用type 4連接的db2,版本是8.2。到現(xiàn)在還沒連上 - --wk