您的位置:首页 > 其它

模仿某BBS项目的时候遇到的问题

2009-02-14 15:22 288 查看
1、在jsp中,打印出提示窗口的问题。我发现jsp中的跳转语句与script脚本不能互用。也就是如果你使用了response.sendRedirect(url)那么,即使没有执行,alert语句也可能不能显示出来。还没有找出是什么原因。

2、SQLServer数据库的分页问题
SQL code
取n到m条记录的语句

a.select top m * from tablename where id not in (select top n id from tablename)

b.select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入
set rowcount n
select * from 表变量 order by columnname desc

c.select top n * from
(select top m * from tablename order by columnname) a
order by columnname desc

d.如果tablename里没有其他identity列,那么:
select identity(int) id0,* into #temp from tablename

取n到m条的语句为:
select * from #temp where id0 > =n and id0 <= m

如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
exec sp_dboption 你的DB名字,'select into/bulkcopy',true

f..如果表里有identity属性,那么简单:
select * from tablename where identITycol between n and m

3、java中日期转换形式:
new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date()) 返回String类型

4、为什么
String.valueOf(a);//不报错
a.toString();//会报错

a.首先传递参数是个赋值的过程,也就是说如果对任何引用变量传递为null的对象的话,都是可以接受的,也就是编译的时候不会出错,但运行时出不出错就要具体情况具体分析了,如果出错那肯定是传空指针异常。
例如同样是static方法,同样是传递参数,但是static String copyValueOf(char[] data)
会报错。至于为什么会报错就要看源代码了。
b.还有就是在如果要调用一个类的成员方法或变量,那你必须要有他的实例,因为java要知道某个实例的具体内存地址,除非是调用静态方法或变量。虽然某类型变量的实例的指向null,但他还是能够代表该类的,所以肯定能调用静态方法。

5、javascript的问题,javascript的字符串

<INPUT id=userid type=hidden name=userid value=<%=userid %>> 如果userid是空的话,则userid.value="null"
注意这是加双引号的。theform.userid.value == "null"

6、在where子句中如果要判断的话,要加‘’的,不加会出错,除非是int型的
String sql="select *from tb_user where login="+login+"and pwd="+pwd;
javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]将 varchar 值 'admin001' 转换为数据类型为 int 的列时发生语法错误
会发生如上错误。
改成String sql="select *from tb_user where login='"+login+"'and pwd='"+pwd+"'";就对了
其实很好理解的,注意'是在"里面的,不要理解为'"+login+"'为固定格式,否则麻烦了,注意这就是句String类型的sql语句,就是吧正确的sql语句转换成String类型

7、jdbc的问题:得出一个重要的结论就是如果对一个Connection,如果要做2次查询,那么createStatement几个呢?一般是一次,但如果嵌套的话,就2次,否则会报错,报object has closed错误,其实仔细想想就该知道错误处在哪了。仔细点就行。实在不行就弄2个,有时候不报错,但查询结果是错误的

8、在数据中如何调用另外个数据库的表,MS-SQL SERVER
例如数据库a,数据库b
select * from b..table(在a中)

9、在sql2000中如何得到最后一次操作所影响记录的ID号
可以使用select @@identity方法,java可以使用
PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet rsKey = pstmt.getGeneratedKeys();
rsKey.next();
int key = rsKey.getInt(1);
rsKey.close();

10、在jsp中设置session失效时间

当客户端发出第一个请求时(不管是被访问网站的任何页面)就会在此站点的服务其中开辟一块内存空间,这块内存就是session,session的销毁有两种方式,一种是session过期时间已到,会自动销毁(注意这里不是马上就会销毁,具体销毁时间由Tomcat容器所决定)。在我们项目中的web.xml中就可以配置:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
表示设置session过期时间为30分钟。值得注意的就是上面说的即使30分钟到了session不一定会马上销毁,可以通过session监听器测试得到每次session销毁的时间都不一样。如果要想安全的话就用下面第二种方法。在Tomcat的conf文件夹中的web.xml中可以找到Tomcat默认的session过期时间为30分钟。如果我们在我们的站点中配置了session过期时间Tomcat容器会以站点配置为主,如果我们没有在站点中配置session过期时间,将会以Tomcat下conf文件夹下的web.xml文件中配置的session过期时间为准。
第二种销毁方式通过手工方式销毁,这种销毁方式会立刻释放服务器端session的资源,我们手动销毁可以通过session().invalidate();实现。

11、MS-SQLSERVER的问题

a.安装时的问题:问题简述:
用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
这一问题一般是由于SQL Server未集成Windows身份验证导致的,所以解决方案为:
打开SQL Server企业管理器。
选择服务器名称上右键选择“编辑SQL Server注册属性”,然后在对话框中选择“使用windows身份验 证”。
试试一试,不行。在看看安全性设置
同样右键,选择“属性”,然后打开“安全性”选项卡。
在选项卡中,选择身份验证为“SQL Server和 Windows ”,其他不变

b.Can't start a cloned connection while in manual transaction mode错误2008-03-13 20:30出现Can't start a cloned connection while in manual transaction mode错误,从网上找到原因及解决办法如下:
原因一般是当你在一个SQL SERVER的JDBC连接上执行多个STATEMENTS的操作,或者是手动事务状态(AutoCommit=false) 并且使用默认的模式. direct (SelectMethod=direct) 模式.
解决办法:
当你使用手动事务模式时,必须把SelectMethod 属性的值设置为 Cursor, 或者是确保在你的连接只有一个STATEMENT操作。
修改url
加入SelectMethod=cursor即可
如:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ys;SelectMethod=Cursor;User=ys;Password=ys");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: