免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2976 | 回复: 11
打印 上一主题 下一主题

StringTokenizer的一些問題 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-22 13:24 |只看该作者 |倒序浏览
我是一個剛學java不久的新手.有一個問題請教一下...
我用的是jBuilderX,做的是一個從文本文件中讀取數據.並保存到DataStore中.
導入的文本是.cvs格式和.rpt格式.. 導入文本和寫入數據庫的基本代碼如下
但是我用的是StringTokenizer分割.分割符為 ,
但是文本中的數據 如: 3,BUSCH,,景勱&,021-64361919,105,ADM/總務類
有的字段為空(紅的部分).插入數據庫的表時卻不能插入
try{
String instring = null;
while ( (instring = br.readLine()) != null) {
instring = instring.trim();
st = new StringTokenizer(instring, ",";
i = 0;
while (st.hasMoreTokens()) {
g_array = st.nextToken().toString();
i++;
}
SaveToDB();
}
br.close();
JOptionPane.showMessageDialog(this,"Load Successfully!";
}catch(Exception ex)
{
JOptionPane.showMessageDialog(this,"Unable to write to DataStore.","ERROR",JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
}
}

private void SaveToDB() {
try {
String sqlInsertQuery = "INSERT INTO MANU (XH,NAME,ADDRESS,PERSON,PHONENUM,NUM,DEP) VALUES ( " +
"\'" + g_array[0] + "\',\'" +
g_array[1] + "\',\'" +
g_array[2] + "\',\'" +
g_array[3] + "\',\'" +
g_array[4] + "\',\'" +
g_array[5] + "\',\'" +
g_array[6] + "\')";
dmdata.myDM.storeConn.setAutoCommit(false);
dmdata.myDM.st.executeUpdate(sqlInsertQuery);
dmdata.myDM.storeConn.commit();
}
catch (SQLException ex1) {
ex1.printStackTrace();
}
}

希望大蝆們能幫幫偶了,都搞了一周了.郁癖死了


還有一個問題就是把文本數據直接抓到程序中的jdbtable1中顯示出來,但是顯示中文為亂碼,,不知道怎麼改正--------抓到dataStore里就沒有這個錯誤,可顯示正常

论坛徽章:
0
2 [报告]
发表于 2004-09-24 09:35 |只看该作者

StringTokenizer的一些問題

難道就沒有個人來頂頂嗎???真郁悶

论坛徽章:
0
3 [报告]
发表于 2004-09-24 11:00 |只看该作者

StringTokenizer的一些問題

用StringTokenizer来拆分string是回遇到你这样的问题,用string.split来拆分"|"等特殊字符是也会有问题,偶都是自己写一个split函数来实现的
    public static String[] splitStr(String strSrc,String strSep){
        if (strSrc==null||strSep==null){
            return null;
        }
        int intPos = 0;
        int intBox = 0;
        Vector vecResult = new Vector();
        String strTmp = null;
        while ((intPos=strSrc.indexOf(strSep,intBox))!=-1){
            if (intBox==intPos){
                strTmp = "";
            }
            else{
                strTmp = strSrc.substring(intBox, intPos);
            }
            vecResult.addElement(strTmp);
            intBox = intPos+1;
        }
        if (intBox<strSrc.length()){
            vecResult.addElement(strSrc.substring(intBox));
        }
        return (String[])vecResult.toArray(new String[0]);
    }

论坛徽章:
0
4 [报告]
发表于 2004-09-24 13:54 |只看该作者

StringTokenizer的一些問題

String ss = "abc|def|lsg|ddd";
String[] sss = ss.split("\\|";

搞定

论坛徽章:
0
5 [报告]
发表于 2004-09-24 13:58 |只看该作者

StringTokenizer的一些問題

"|"在java中需要做转义处理所以在split中传进去的必须是一个"\|",这样它才能处理,那么在外层调用这个split时,只有"\\|"才能传进去"\|"。

论坛徽章:
0
6 [报告]
发表于 2004-09-26 16:57 |只看该作者

StringTokenizer的一些問題

看看我的AnySQL,是改写了StringTokenizer来实现的,可以支持一个字符串来分隔的,而不是一个字符!

论坛徽章:
0
7 [报告]
发表于 2004-09-27 09:39 |只看该作者

StringTokenizer的一些問題

StringTokenizer和String的split也都是支持可用字符串和字符来分隔。

论坛徽章:
0
8 [报告]
发表于 2004-09-27 18:46 |只看该作者

StringTokenizer的一些問題

謝謝各位的幫助!!!

论坛徽章:
0
9 [报告]
发表于 2004-09-27 20:39 |只看该作者

StringTokenizer的一些問題

up一下~!

论坛徽章:
0
10 [报告]
发表于 2004-09-27 21:16 |只看该作者

StringTokenizer的一些問題

[quote]原帖由 "hermit"]  }[/quote 发表:



你这个程序在多字符作为分隔符的情况下有bug哈
是不是应该
int x=strSep.length();
........
}
vecResult.addElement(strTmp);
intBox = intPos+x;

程序里的这句没看懂 ,“new String[0]“怎么回事?
(String[])vecResult.toArray(new String[0])
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP