存档

2010年9月 的存档,文章数:26

演示在用java连接Sybase ASE数据库。用了一个简单的java程序作试验。

第一步:获得jdbc for sybase驱动程序
下载JDBC驱动:http://www.sybase.com/detail?id=1009726

也可到CSDN下载:http://download.csdn.net/source/2697077
有jConnect6.05和jConnect5.5两种。jConnect6.05中包含jconn3.jar包,jConnect5.5中包含jconn2.jar包。建议最新的Sybase驱动jconn3.jar。不过我的这个例子很简单,两者都可以用。

下载:jconn3.jar ,下载:jconn2.jar

第二步:设置环境变量CLASSPATH

将下载下来的jconn2.jar或jconn3.jar放到目录D:\sybase\Shared\lib下。将环境变量CLASSPATH设置为:D:\sybase\Shared\lib\jconn2.jar

set CLASSPATH=.;d:\sybase\shared\lib\jconn2.jar;   (注意:第一个“.”,这个代表当前目录。)

第三步:编写一段简单的java程序。

下面的这段程序用jconn2.jar连接Sybase ASE15.0.3数据库并提取master数据库中的用户表的ID和name两列信息。

Sybase ASE数据库的ip地址为:192.168.0.168,端口:5000。登录sa的密码为:sybase

执行:select id,name,crdate from dbo.sysobjects where type='U'   这条语句返回当前数据库(这在url中指定!)中的用户表的id和name列。

JAVA版hello world全攻略
侯光敏

    看到很多技术网站的BBS上面充斥着java初学者的关于运行第一个java程序的求助信息,我觉得作为“过来人“很有写这篇文章的必要,因为他们遇到的都是些很低级的问题,但是让这些问题占据bbs上那么多宝贵的空间就太不应该了。
    要搞清楚的基本概念
    java是一种跨平台的网络语言,为了能够在不同平台上运行,它使用了虚拟机这个概念。后缀名为java的文件是源代码文件,它经过编译后生成的是 class文件。虚拟机执行的就是这些class文件,将它们转化成为不同平台能够运行的命令。这就是为什么java的效率比较低的原因。也是因为这个原 因,在java里没有其它语言的使用者熟悉的exe文件的概念。
    执行hello world的方法
    切记:在命令行中输入 javac 源文件名.java (编译)
                        java  源文件名      (执行,没有后缀)
这里说的是java application,里面包括main函数。
如果hello world是applet版的,在命令行中输入appletviewer 源文件名 (已经编译后的class文件)
如果class文件已经嵌入了html网页中,直接用IE打开就行了。
    application经常出现的错误
    系统提示Exception in thread "main" java.lang.NoClassDefFoundError。出现这个提示的原因可能有:
    1 你把文件名拼错了,java对大小写是敏感的。打错了当然找不到文件。
    2 虚拟机没有找到必须的类库。你可能没有在autoexec.bat文件中设置classpath。进入windows的运行,输入sysedit,然后在 autoexec.bat文件中加入这么一行:set classpath=你的jdk的安装目录\lib; 例如set classpath=c:\jdk1.3.0_02\lib; 保存退出后,你要在dos窗口的c根目录下执行一遍autoexec.bat文件已保证被设置了,当然,如果你愿意也可以重启机器。
    系统提示HelloWorld.java:1: Public class helloworld must be defined in a file called

以下存储过程能够统计sqlserver数据库内所有用户表所占用的空间,并按照占用空间大小倒序排列。

--------------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE GetAllTableSizes

AS

DECLARE @TableName VARCHAR(100)

DECLARE tableCursor CURSOR FORWARD_ONLY

FOR

select [name] from dbo.sysobjects

  where OBJECTPROPERTY(id, N'IsUserTable') = 1

  FOR READ ONLY

 

CREATE TABLE #TempTable

(

  tableName varchar(100),

  numberofRows varchar(100),

  reservedSize varchar(50),

  dataSize varchar(50),

  indexSize varchar(50),

  unusedSize varchar(50)

以下存储过程能够自动批量删除数据库库内的所有用户表。

可以修改存储过程内的条件来删除指定的表。

删除表时请谨慎!

CREATE PROCEDURE sp_drop_tbl
AS
BEGIN
    DECLARE @tblname varchar(80)
    DECLARE @dropsql varchar(100)
    DECLARE cur1 CURSOR FOR
        SELECT name FROM dbo.sysobjects WHERE  type = 'U'
    OPEN cur1
    FETCH cur1 INTO @tblname

    WHILE (@@SQLSTATUS = 0)
    BEGIN
        SELECT @dropsql = "DROP TABLE " + @tblname
        EXEC (@dropsql)
        FETCH cur1 INTO @tblname
    END

    CLOSE cur1
    DEALLOCATE cursor cur1
END

Sybase ASE15.0及以后的版本中的bcp命令实用工具中有个-Y参数,这个参数的作用是:禁用在服务器中的字符集转化,在使用bcp in时由bcp在客户端上执行字符集转化过程。

只有ASE15.0或更高版本中支持客户端unicode转化。

另外:所有字符集转化都是在bcp out期间在服务器中执行的。

 

 

 

 

 提供一个能够自动生成Sybase数据库内所有表的表结构、索引语法的存储过程。

存储过程名字:sp_gettabledll 下载

过程语法如下:

----------------------------------------------------------------------------------------------------------------------

if exists(select 1 from sysobjects where name = 'sp_gettabledll' and type = 'P')
  drop procedure sp_gettabledll
go

create procedure sp_gettabledll 
@tblname varchar(30) = null, 
@prechar varchar(4) = null,   --$:no print 
@table_dll varchar(16384) = null out, 
@dbname varchar(32) = null, 
@droptg char(1) = '1', 
@prxytx varchar(255) = null, 
@replace varchar(20) = null, 
@tabtype varchar(1) = 'A', --A:所有表;P:代理表;U:用户表 
@indextg varchar(3) = 'TPI',  --T:纯表;P:主键;I:纯索引;J:除主键外的纯索引(和TP使用与I相同,和I同时使用I失效) 
@table_seg varchar(32) = null, 
@index_seg varchar(32) = null 
as 
begin 
     set nocount on  
 

 在sybase中找回丢失的sa密码

前提条件是sa未被锁定!
  1、在sybase目录的install子目录的启动server文件  
        RUN_server(这里的server表示你的服务器名称,如这里我的是RUN_FENGLB)名,编辑该文件,
 在其中的“<Sybase目录>\data\master.dat -sFENGLB”后加入参数 -psa,  
        保存该文件。  
   
  2、如果服务器已经启动,先停止之。  
   
  3、启动一个DOS窗口,转到上面的install目录,将DOS窗口的属性的屏幕缓冲区大小设置为9999,将执行第1步批处理文件以启动 server,在启动之后,将DOS窗口中的内容全部复制到记本事中,查找字符串“New SSO password for sa:”,后面的就是sa的新口令,记录之。  
   
  4、切换到SQL   Advangtage以sa帐号登录,口令为刚刚得到的密码。  
   
  5、进入server以后,用命令sp_password修改sa口令:sp_password '原密码','新密码','用户名'
 新密码的位数一定要大于6位,否则不能够更改成功。
   
  6、回到第1步,去掉增加的选项-psa,保存退出。

转自:http://blog.csdn.net/fenglibing/archive/2008/02/15/2097060.aspx

用sybase自带的客户端工具sybase central连接ase的时候,如果连接字符集设置不合适,查询结果中汉字会出现乱码。

如果ASE数据库的字符集为:iso_1或者cp850,执行:

sp_configure "disable character set conversi",1

go

修改此配置参数,需要重启ASE服务器。

然后,在sybase central连接配置窗口中,将Character set调整为:cp936。必须设置Character set这个参数,否则sybase central中显示的汉字肯定是乱码,这和sybase central使用的jdbc驱动有关。

其实,将Character set也可以调整为:eucgb,gb18030,这些都是支持中文的字符集。

另外,如果ASE服务器的字符集为:cp936或者utf8,可以不用修改参数disable character set conversi为:1。仅仅通过调整Character set为:cp936 也能解决汉字显示乱码的问题。