Topic: 请高手帮忙,有关SQL Server 2000,jdbc

  Print this page

1.请高手帮忙,有关SQL Server 2000,jdbc Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-10 09:29

有这样一个要求:
1.读取414.txt文件,将文件内容插入到SQL Server 2000
2.414.txt文件格式说明:以N410.N411......N418为索引,其余为要写入到SQL的1000数据。
3.SQL表中字段为N410,N411,....N418.
请高手指点。给出DEMO。
谢谢!!!!

414.txt (15.25k)

2.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-10 22:01

拜托了!

3.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: jiangns3000
Posted on: 2003-04-11 01:11

你要的DEMO。我已用你的414.txt测试过,数据正常放入库中。我的系统:
win2k, SQL server 2000 个人版,微软的SQL2000 for JDBC driver。
在SQL2000中,server名为:JIANGNS1,运行一个实例:JNSINSTANCE。建了一个库:jnstest,内有表:jnstable。表的结构如你所述。用户名:sa。口令:jns。这些信息都在JAVA程序中用到。
414.txt从命令行中读入。
:)当然程序可进一步优化。

package testsql;
import java.io.*;
import java.sql.*;
import java.util.*;
public class txtsql {
public txtsql() {
}
public static void main(String[] args) {
try{
BufferedReader br=new BufferedReader(new FileReader(args[0]));
String[] line=new String[10];
int i;
for(i=0;i<=9;i++)
line[i]=br.readLine() ;//line[0] 是空行.line[1]--line[9]

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn = DriverManager.getConnection
("jdbc:microsoft:sqlserver://JIANGNS1\\\\JNSINSTANCE:1433;User=sa;Password=jns;DatabaseName=jnstest");

StringBuffer inst;
Statement st=conn.createStatement() ;

StringTokenizer st0=new StringTokenizer(line[1]);st0.nextElement() ;
StringTokenizer st1=new StringTokenizer(line[2]);st1.nextElement() ;
StringTokenizer st2=new StringTokenizer(line[3]);st2.nextElement() ;
StringTokenizer st3=new StringTokenizer(line[4]);st3.nextElement() ;
StringTokenizer st4=new StringTokenizer(line[5]);st4.nextElement() ;
StringTokenizer st5=new StringTokenizer(line[6]);st5.nextElement() ;
StringTokenizer st6=new StringTokenizer(line[7]);st6.nextElement() ;
StringTokenizer st7=new StringTokenizer(line[8]);st7.nextElement() ;
StringTokenizer st8=new StringTokenizer(line[9]);st8.nextElement() ;

while(st0.hasMoreTokens() )
{
inst=new StringBuffer("insert into jnstable ( N410,N411,N412,N413,N414,N415,N416,N417,N418)VALUES(");
inst.append(st0.nextToken()+","+st1.nextToken()+","+st2.nextToken()+","+
st3.nextToken()+","+st4.nextToken()+","+st5.nextToken()+","+
st6.nextToken()+","+st7.nextToken()+","+st8.nextToken()+")") ;
System.out .println(inst) ;
st.executeUpdate(inst.toString() ) ;
}
conn.close() ;
}catch(FileNotFoundException e){ System.out .println(e) ;}
catch(ClassNotFoundException e){ System.out .println(e) ;}
catch(java.sql.SQLException e){ System.out .println(e) ;}
catch(IOException e){ System.out .println(e) ;}

}
}
[/color]
[color=Blue]

4.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-13 01:18

jiangns3000老兄:
谢谢了,我会试着将其改成jdbc.odbc。若有问题再向来老兄求助。
对了,你的yahoo邮箱不知道查收过没有,可否将我那个多线程的程序看看。
再次感谢!

5.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: jiangns3000] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-21 09:41

可否读取414.txt里的第13个值作为NO.,其余N410.N411.....N418里的内容作为text存入。即将资料存成一行。

6.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-21 09:46

以上提问有误,稍后再作提问。

7.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: lyon
Posted on: 2003-04-21 13:42

能给个SQL SERVER 的JDBC驱动吗?
lyon@srt.com.cn
多谢先

8.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: lyon] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-21 15:35

http://download.microsoft.com/download/3/0/f/30ff65d3-a84b-4b8a-a570-27366b2271d8/setup.exe

9.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-24 14:59

sql 里的text类型最多可存多少字符?

10.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: jiangns3000
Posted on: 2003-04-24 19:45

Variable-length non-Unicode data with a maximum length of 2^31 - 1 (2,147,483,647) characters

11.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-25 23:13

我的程序规划:1.java 程序先将目录如D:\data下文件如414.txt等列表保存成文件。2.然后读取列表文件名称字符。3.将提取的文件内容插入到SQL SERVER。4.依照列表文件将列表过的文件删除。5.程序循环执行。

12.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-25 23:15

jiangns老兄:
又要麻烦了。可否就将以上程序作一些修改:
读取第11个数作为NUMBER,再按行读取依次以text插入到NX10 NX11 NX12 NX13 NX14 NX15 NX16 NX17 NX18。
我的SQL SERVER表的结构:NMUMBER NX10 NX11 NX12 NX13 NX14 NX15 NX16 NX17 NX18。

13.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: jiangns3000
Posted on: 2003-04-26 16:05

已按照你的程序规划(1--5 点)改好程序。程序见附。
并按程序规划进行了测试,结果正确。
用法:SQLbat txt数据文件所在目录 文件列表所放目录
如:SQLbat d:\test1 d:\test2
将d:\test1中所有*.txt文件全处理到SQL中,列表文件FileList.txt放在d:\test2中。每当处理完,程序询问是否要继续。
注:1)可能的话,你转换成GUI方式。
2)我的理解是:NUMBER中放的是第一行中的第十一个数。一个txt文件在SQL中放一条记录.
3)程序在JB8中手工书写。没有多余代码。

SQLbat.java (4.25k)

14.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-26 21:00

jiangns老兄:
谢谢了。
我先来测试看看。

15.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-26 23:33

jiangns3000:

太感谢了!

请问你将NX10等以那种数据类型来定义的,
我用text,结果显示不出原始数据,而是<long text>。

16.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-26 23:39

另外请教一下:java里的定时器该如何来做?
希望程序可以设定中间的等待时间,时间到后执行循环,无需人工干预。

17.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: jiangns3000
Posted on: 2003-04-27 09:19

1)是你设置要求的text类型。最多可放2^32-1个字符呢。
2)定时器使用:javax.swing.Timer类即可。

18.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: jiangns3000
Posted on: 2003-04-27 10:49

“用text类型显示不出原始数据”,这是什么意思?不可能呀。为使你更方便查看数据库中记录内容,提供如下一个方法,将它放入SQLbat.java中。
另外一个是时间待方法。
代码见附。

method.java (1.3k)

19.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-04-28 09:14

jiangns3000 :
用查询语句可以显示出来了
但是之间到SQL 2000里显示表中内容显示不出原始数据,而是<long text>。
不知道是为什么。

20.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: dingsc
Posted on: 2003-05-13 17:28

第一行:
5.年
6.月
7.日
8.时
9.分
10.秒
如何形成SQL里的语句:
年月日时分秒

作为一个字段

21.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: 423
Posted on: 2003-05-13 18:17

各位老大,我用resin解释jsp,数据库是ms sql server 2000,程序如下:
<%@ 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://192.168.10.3:1433;DatabaseName=testdb";
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select xh,xm from table";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
但是为什么数据库里的姓名字段为什么出现"????"
是不是我的程序有错误?大家救命啊!
错误结果如下:
您的第一个字段内容为: 您的第二个字段内容为:??? 您的第一个字段内容为: 0000000025 您的第二个字段内容为:null 您的第一个字段内容为:. 您的第二个字段内容为:??? 您的第一个字段内容为:`00021202 您的第二个字段内容为:??? 您的第一个字段内容为:00000002 您的第二个字段内容为:??? 您的第一个字段内容为:00000003 您的第二个字段内容为:??? 您的第一个字段内容为:00000004 您的第二个字段内容为:??
???原来应该是显示汉字的姓名,我该怎么办?

22.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: 423] Copy to clipboard
Posted by: yrlong
Posted on: 2003-05-13 21:55

这个问题我也遇到过,很容易解决.
你只需要在<html>中加入<meta>标记
指明Html得编码位GB2312就可以.如下面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<%@ page language="java" import="java.sql.*,java.util.*" session="true" isThreadSafe="true" isErrorPage="false" contentType="text/html;charset=gb2312" %>Blush

23.Re:请高手帮忙,有关SQL Server 2000,jdbc [Re: dingsc] Copy to clipboard
Posted by: 423
Posted on: 2003-05-14 09:49

我把程序修改成这样:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>1</head>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<%@ page language="java" import="java.sql.*,java.util.*" session="true" isThreadSafe="true" isErrorPage="false" contentType="text/html;charset=gb2312" %>
<body>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://192.168.10.3:1433;DatabaseName=SDb";
String user="sage";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select xh,userid,xm from tjb where xh='00021730'";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的序号为:<%=rs.getString(1)%>
您的用户名为:<%=rs.getString(2)%>
您的姓名为:<%=rs.getString(3)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>

但是结果还是这样:
1 您的序号为:00021730 您的用户名为:null 您的姓名为:?? 数据库操作成功,恭喜你


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923