日期:2014-05-16  浏览次数:20478 次

oracle学习中的一些经验
     1、 oracle中无法删除已经连接了的用户。 我通过配置tomcat服务器的方式创建了连接池,并通过程序与数据库建立好了连接,此时当我删除用户时报错“不能删除已经连接了的用户”。

    2、 如何删除一个用户下所有的表, 这个问题原本是在刚接触oracle的时候就已经涉及到了, 今天再次有删除的需求时我竟然手动地去删除一张张表, 汉~~~~复习一下:

             删除用户的语法是 drop user user_name
如果要删除该用户模式的包含对象(比如表)就要在要删除得用户名后面加上cascade
drop user user_name cascade;

    3、 通常使用的中文化的oracle多是基于gb2312编码的。

    4、  异常: java.sql.SQLException: ORA-01840: 输入值对于日期格式不够长
      ————找到错误原因了: 找到了..column两边各少了个"'"

  5、 关于如何构造动态查询的问题?

        在做一个网页时希望实现动态查询的功能, 也即给出一系列的可选的选项供用户选择, 然后根据用户选择出来的组合条件进行查询。 我是实现了此功能的,但是使用的是拼接sql的方法, 这是一种存在严重的安全隐患的做法, 更先进方法探索中... ...

      关于自己这种拼接sql的方法的补充:

5.1.   除了在前面用simon = " 1 = 1 "外,还可以每次都有个 and .后面再将前面四个字符删掉。这样可以避免所有为空时查询出所有记录。
5.2     使用Trim函数去除空格的干扰
3.如果txtname.Text等几个文本内包含有“‘”字符的话,程序会出错。建议用Replace(字符串, "'", "''")过滤一下。
4.最好用个复选框或者下拉列表来作为你查询条件的依据,选中的才查,不要用=“”来判断。因为这样子就可以少了很多过滤处理



6、    一个同一字段可多选几个条件进行查询及打印的范例。
与一般的通用查询所不同的是,IN 后面的参数是多个字符串,不是单个字符串,因此用引用窗体的控件的方法无法实现条件查询。需要先构造一个SQL语句后,写入查询中,再重新定义一下子窗体的数据源就可以更新显示了。
这种使用列表框的通用查询,动态加载字段的值供选择,并可以多选,比一般的组合框或文本框输入查询条件要方便和灵活。但无法实现模糊查询,所以要根据需要,用列表框与文本框、组合框共同使用。

7、  网上看到的一个问题:

            我现在需要用J2EE的WebService来代替以前的COM+组件实现如下功能:  
  (1)通过WebService传入一条SQL语句进行查询  
  (2)将查询出来的结果集通过Web   Service返回给VC的客户端  
  (3)要求SQL是动态的,查询的字段与列数也是不确定的,  
  以前用COM+实现时可以返回一个结果集给VC客户端,  
  现在用J2EE代替COM+来实现以上的功能,我该如何做,  
  有没有现成的组件可以使用,请各路高手给点建议? 

——————网友解答:    2种方式,一种是RPC方式,传入一个字段名数组,一个表名,一个字符串条件,返回一个2维数组表示多条记录。是否需要传个页码数过去,需要考虑一下。  
  另外一种是消息服务方式,就是传入xml作查询条件,返回xml作结果。结构自己设计。  
  不管用那种但一次返回的记录数不宜太多,如果太多,建议作为数据文件压缩后另行传送。

               建议只转XML数据传递。  
  在XML定义要查询的项值(比如你说的字段),及要返回的结果,如果有特别要求,定义好格式,返回XML数据集。执行查询客户端(需要调用的不用关心)。

                    我的读后感: 动态查询的参数列表用字段名数组? 如何控制?



8、  我尝试在一个存储过程中传递一系列以逗号划定界限的值,以限制结果集。但是无论什么时候,我在IN子句中使用变量,都会得到错误信息。是否存在一种不执行动态SQL语句也能完成查询的方式呢?

     动态SQL是个危险分子,在一些特定的组织中甚至不被允许使用。

       那么你要如何在不使用动态SQL的情况下执行查询呢?可以通过XML实现。

  第一步,你需要从一个以逗划定界限的字符串中产生一个XML字段。

  4、 关于我自己写的那种拼接字符串的方法存在如下一些建议: