安裝前html
建立sybase用戶以及目錄java
mkdir /opt/sybase linux
useradd -d /opt/sybase sybasesql
chown -R sybase:sybase /opt/sybase數據庫
安裝教程:Linux下安裝Sybase ASE 16
1、沒法進入圖形界面bash
在超級用戶下:
# xhost +
而後在sybase用戶下ui
sybase@mymotif-ThinkPad-X240:~$export display=:0.0
如還有問題那就要檢查X11所需的依賴包是否安裝完整url
2、安裝後設置環境變量spa
cat /opt/sybase/SYBASE.sh >>~/.bashrcunix
啓動服務:
$SYBASE/$SYBASE_ASE/bin/startserver -f $SYBASE/$SYBASE_ASE/install/RUN_MYMOTIFTHINKPADX240
在非sybase用戶下啓動
su - sybase -c "source /opt/sybase/SYBASE.sh;/opt/sybase/ASE-16_0/bin/startserver -f/opt/sybase/ASE-16_0/install/RUN_MYMOTIFTHINKPADX240"
su - sybase -c "source /opt/sybase/SYBASE.sh;/opt/sybase/ASE-16_0/bin/startserver -f/opt/sybase/ASE-16_0/install/RUN_MYMOTIFTHINKPADX240_BS"
或
su - sybase -c "source /opt/sybase/SYBASE.sh;$SYBASE/$SYBASE_ASE/bin/startserver -f$SYBASE/$SYBASE_ASE/install/RUN_MYMOTIFTHINKPADX240"
su - sybase -c "source /opt/sybase/SYBASE.sh;$SYBASE/$SYBASE_ASE/bin/startserver -f$SYBASE/$SYBASE_ASE/install/RUN_MYMOTIFTHINKPADX240_BS"
3、安裝時選擇中文utf8字符集執行isql出錯
$ isql -S服務名 -Usa -P密碼
The context allocation routine failed when it tried to load localization files!!
One or more following problems may caused the failure
Your sybase home directory is /opt/sybase. Check the environment variable SYBASE if it is not the one you want!
Using locale name "zh_CN.UTF-8" defined in environment variable LANG
Locale name "zh_CN.UTF-8" doesn't exist in your /opt/sybase/locales/locales.dat file
An error occurred when attempting to allocate localization-related structures.
修改
在/opt/sybase/locales/locales.dat文件中的
[linux]字段中追加
locale = zh_CN.UTF-8, chinese, utf8
如已安裝unixodbc則將/usr/bin/isql更名
設置環境變量
export SYBASE=/opt/sybase
4、使用
在.bashrc最後加
alias isql='/usr/bin/rlwrap isql'
可支持isql命令回調等功能
建立設備
disk init name="testdb_dbdev",physname="/opt/sybase/data/testdb_dbdev.dat",vdevno=10,size=10240
go
disk init name="testdb_logdev",physname="/opt/sybase/data/testdb_logdev.dat",vdevno=11,size=5120
go
建立數據庫
create database testdb on testdb_dbdev=20 log on testdb_logdev=10
go
1> sp_addlogin mymotif,wxwpxh
2> go
1> sp_role 'grant',oper_role,mymotif
2> go
建立用戶並使之成爲新建數據庫的擁有者,而且數據庫爲其默認數據庫
1> use testdb
2> go
1> sp_changedbowner mymotif
2> go
1> sp_modifylogin mymotif,defdb,testdb
2> go
1> sp_modifylogin mymotif,deflanguage,chinese
2> go
建表
/*drop SC */ if exists (select 1 from sysobjects where name = 'SC') begin drop table SC print "table SC is dropped..." end go /* COURSE */ if exists (select 1 from sysobjects where name = 'COURSE') begin drop table COURSE print "table COURSE is rebuilded..." end go create table COURSE ( CNO char(6) primary key, CNAME char(18) NOT NULL, TEACHER char(12) NOT NULL, TIME smallint NOT NULL) go /* STUDENT */ if exists (select 1 from sysobjects where name = 'STUDENT') begin drop table STUDENT print "table STUDENT is rebuilded..." end go CREATE TABLE STUDENT ( SNO char(7) primary key, SNAME char(12) NOT NULL, SEX char(3) NOT NULL, BDATE date DEFAULT NULL, DIR char(18) DEFAULT NULL ) go /*create SC */ create table SC( SNO char(7) NOT NULL, CNO char(6) NOT NULL, GRADE decimal(6,2) DEFAULT NULL, foreign key(SNO) REFERENCES STUDENT(SNO), foreign key(CNO) REFERENCES COURSE(CNO), CONSTRAINT uc_SC UNIQUE (SNO,CNO) ) go
sql腳本執行
$ isql -S服務名 -U用戶 -P密碼 -i腳本全路徑
如
isql -SMYMOTIFTHINKPADX240 -Umymotif -Pwxwpxh -i sybtestdb.sql
JDBC例子:
package www.zjptcc.wxw.jdbctest.syb; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class QueryCourse { /** * @param args */ public static void main(String[] args) { // TODO 自動生成的方法存根 try { Class.forName("com.sybase.jdbc4.jdbc.SybDriver").newInstance(); String url = "jdbc:sybase:Tds:localhost:5000/testdb";// 數據庫名 Connection conn = DriverManager.getConnection(url, "mymotif","wxwpxh"); Statement st = conn.createStatement(); String sql = "SELECT * FROM COURSE"; // 表 ResultSet rs = st.executeQuery(sql); int col_count=st.getResultSet().getMetaData().getColumnCount(); while (rs.next()) { for(int row=1;row<=col_count;row++){ System.out.print(rs.getString(row)); System.out.print(" "); } System.out.println(); } rs.close(); st.close(); conn.close(); } catch (Exception e) { System.out.println(e.getMessage()); } } }