java编程中出现的一些问题!(50分)

  • 主题发起人 主题发起人 dhyzf
  • 开始时间 开始时间
D

dhyzf

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在正在做一个校园网的计费系统:
对于较少的数据交互,我准备基于web。而对于数据量大的交互,我准备
用客户服务器模式(用java做为客户端)。
日前系统准备实现功能如下:
1:数据采集(从日志文件抽取有用信息写入数据库中去);
2:数据分析(根据数据库数据进行分析);
3:用户管理(实现用户的管理)
由于校园网中用户的多样性,有拨号用户,专线用户,ftp用户,邮件用户
。我准备采用基于LDAP的服务方式,把所有的帐户都集成域用户,实现帐号的
方便管理。目前所做的为基于NT平台,数据库采用SQLServer。但为了便于以后
能够向Unix平台扩展,数据库将采用sybase或Oracle。
为了能够顺利扩展,请问应该怎么做呢!(基于LDAP的应用程序应该注意什么
关键的地方呢)
日前数据库我准备采用集中式管理。因为上网用户的日志文件比较大,单单
专线用户的日志一天就有600M。我准备的数据周期为
拨号:一天处理一次日志;
专线:一个小时处理一次日志;
邮件:一天处理一次日志;
我想在数据采集的应用程序做为一个服务,一个小时调用一次,请问可以用
什么方式,在进程里有没有sleep这个函数呢。
我还是一个学生,对于编程有很多不懂,还请您就这些问题给我一个解答吧
谢谢!

目前,对于文件操作中的D://mis98//proxy.txt。请问这个双斜杆有什么用
呢。对于网络文件又应该如何操作呢。我不是说对于url这种格式,我是指在网
络邻居中能看到的机器中的一个文本文件。
关于SQLServer数据库中有两种时间日期型的格式,smalldatetime,
datetime,在java中是否可以用Timestamp来指代前者,而用Date,Time来指代后
者呢。为什么我从文本文件中可以读取出来Date和Time格式的数据,但在插入
数据库的时候却出错了,是时间出了错,寻个":"的地方
我在数据库表中把这两种格式转换为smalldatetime,
这样有错吗。Timestamp的格式一定要yyyy-mm-dd hh-mm-ss.ffffff请问能否用
java.util.Date中的格式来转换成这种格式呢。并在插入数据库的时候应该注意
什么问题呢?
还是Date的问题:在java.sql.Date d=Date.valuesof("2002-05-01");
插入数据库后显示的时间为:1905-6-20,这是什么问题呢?
唉,头大了,如何能在任意格式的日期数据之间转换呢
怎么样可以定义一些全局变量呢。在整个应用程序中都可以使用!
 
java中关于date的操作主要用
java.util.Calendar
java.text.DateFormat类。
Date的很多方法已经不推荐使用了。
 
首先,在各个数据库中移植是一件非常痛苦的事情。
其次,关于LDAP,没有问题,Java可以非常好的支持。
第三,关于日期格式问题,您需要的知道的有3个类:
java.util.Date,
java.sql.Date;
java.util.Calendar.
具体的字符串和Date之间的转换,现在都由Calendar类负责。
至于您提到的java.sql.Date d=Date.valuesof("2002-05-01");
这个方法好像已经不再推荐使用了。
系统理解05为月,2002为日,而1为年。系统从1900年开始计时,加上1年5个月2002天,好像差不多就是
你得到的结果了?
请您使用Calendar中的函数来转换字符串到Date类型。
SmallDateTime,是SQL Server定义的类型,我不推荐您使用。
第四,D://mis98//proxy.txt一定是在一个字符串中出现的。Java字符串和C类似,使用/作为
转义符,比如/r/n表示回车,而//表示一个/字符。
 
用了Calendar 后又应该怎么样才可以和字符型进行转换呢
我需要三种格式的数据。java.sql.Date,java.sql.Time,java.sql.Timestamp
对于头两种格式为"2002-05-01","00:03:40",后一种格式为java.util.Date少
了个CST。应该如何做呢。我要插入的数据库为SQLServer
 
前辈们说说这些用法吧。
如何转换
 
jaav中如何执行远程主机上的命令呢。
如'dir''ls'等
 
发现一个很奇怪的问题
2002-2-12<------->1905-6-10
2003-2-12<------->1905-6-11
2002-3-12<------->1905-6-9
2002-2-11<------->1905-6-11
年数加一,多一天
月份加一,少一天
天数加一,少一天
现在我已用字符型处理!
 
RS Error at 用户登录:[Microsoft][ODBC SQL Server Driver]连接占线导致
另一个hstmt
代码如下:
public int IsUser(String user,String pwd){
try{
cstmt=conn.getconn().prepareCall("{call p_check(?)}");
cstmt.setString(1,user);
rs=cstmt.executeQuery();
if(rs!=null){
while(rs.next()){
if(pwd.equalsIgnoreCase(rs.getString("U_Pwd"))){
if(rs.getInt("U_IsAdmin")==1)
return Admin_User;
else
{
if(rs.getInt("U_IsLock")==1)
return Error_in_Lock;
else
return Common_User;
}
}
else
return Error_in_Pwd;
}
rs.close();
}
}
catch(Exception e){
try{
cstmt.close();
}
catch(Exception ex){
}
System.out.println("Rs Error at 用户登录:
"+e.getMessage());
}
return Error_in_User;
}
这是什么问题呢。我有两类用户,一类管理员,一类用户,用户有被锁状态与
非被锁状态。被锁了,就不能使用。
我想是不是存储过程那儿出错了。。
存储过程要在哪儿关闭呢。。因我在其它地方(比如新建用户时)只要有用到
这个函数,就会出现这个错误!

 

只能支持一个用户登录!也就是只认这个用户的连接,其它用户一概不认,并且
错误会出现三四个,都是同一个错误!
 
取得当前时间,并将其插入到数据库中
我们可以通过如下的方法线得到如:2002/02/23 12:00:00 形式的字符串。
范例一:
Calendar calendar = Calendar.getInstance();
currentYear = calendar.get(Calendar.YEAR);
currentMonth = calendar.get(Calendar.MONTH) + 1;
currentDay = calendar.get(Calendar.DATE);
currentHour = calendar.get(Calendar.HOUR_OF_DAY);
currentMin = calendar.get(Calendar.MINUTE);
currentSec = calendar.get(Calendar.SECOND);
timeStr = Integer.toString(currentYear)+"/"+Integer.toString(currentMon)+"/"+Integer.toString(currentDay)+" "
+ Integer.toString(currentHour)+":"+Integer.toString(currentMin)+":"+Integer.toString(currentSec);
=======================================================================================
如果想要得到日期字符串
1996.07.10 AD at 15:08:56 PDT
Wed, July 10, '96
12:08 PM
12 o'clock PM, Pacific Daylight Time
0:00 PM, PST
1996.July.10 AD 12:08 PM
可以使用java.text.SimpleDateFormat
范例二:
Calendar today = Calendar.getInstance(TimeZone.getDefault());
Date date = today.getTime();
String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(pattern);
String now = df.format(date);
System.out.println(now);
 
RS Error at 用户登录:[Microsoft][ODBC SQL Server Driver]连接占线导致
另一个hstmt
就只有这个问题了,解决完就放分
 
1、执行到那一步错了?
2、存储过程是什么?
 
select table.field1,table.field2 from table
where table.field3=@userid
就在这一步出了错.呵呵
请问出现这种问题一般是在什么情况下呢。
是不是如果当前用户存在一个连接如再试图连接就会出现这么一个错误呢
谢谢回答
 
> 出现的错误: 连接占线导致另一个hstmt
单从你发到贴在网上的程序很难看出具体的错误在那里
由于使用缺省设置创建时,例如:con.createStatement()。ResultSet 是一种只能访问一次(one-time-through)、
只能向前访问(forward-only)和只读的对象。只能访问数据一次,如果再次需要该数据,必须重新查询数据库。
但是通过设置 Statement 对象上的参数,就可以控制产生的 ResultSet。例如:
Class.forName(driverName);
db = DriverManager.getConnection(connectURL);
Statement statement = db.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
这个 Statement 现在将产生可以更新并将应用其他数据库用户所作更改的 ResultSet。
您还可以在这个 ResultSet 中向前和向后移动。
第一个参数指定 ResultSet 的类型。其选项有:
TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至可以进行特定定位,例如移至列表中的第四个记录或者从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 一样,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。
第二个参数设置 ResultSet 的并发性,该参数确定是否可以更新 ResultSet。其选项有:
CONCUR_READ_ONLY:这是缺省值,指定不可以更新 ResultSet
CONCUR_UPDATABLE:指定可以更新 ResultSet <仅仅更新 ResultSet 并不一定意味着会在数据库中反映出这些更改>
但是当我们设定con.createStatement(ResultSet.CONCUR_UPDATABLE,..)时,由于该Statement需要和数据库的连接
保持一致,假如在使用con.createStatement时,将会出现上面的问题:>>>>>>>连接占线导致另一个hstmt
[:)][:)]
以上的东西是我的猜想,你可以具体找一找问题的所在,可以使用debug断点调试技术

 
如果试图关闭连接则会出错。
连接出错产生在一个用户同时两个连接
不管用存储过程还是其它的都会出现一样的错误
目前基本已解决,但有时还是会出现一些这种错误码
 
ok,恭喜你了!
[:)]
 
多人接受答案了。
 
后退
顶部