Installing unixODBC

CobolScript Professional for Linux,FreeBSD,and SunOS.


Overview


CobolScript Professional uses the ODBC specification to connect to data sources. You must install unixODBC in order to use CobolScript Professional for Linux,or SunOS. unixODBC has a GUI component,but it is not required to use CobolScript Professional. If you are running Linux with a kernel older than 2.2.12,you should not install the GUI.


Installing unixODBC without the GUI


Step 1. Download unixODBC from
here .
Step 2. Copy the unixODBC*.tar.gz to /usr/local
Step 3. gunzip unixODBC*.tar.gz
Step 4. tar xvf unixODBC*.tar
Step 5. cd unixODBC*
Step 6. ./configure --enable-gui=no
Step 7. make
Step 8. make install
Step 9. cd /etc
Step 10. Edit the file ld.so.conf and add "/usr/local/lib" to it.
Step 11. ldconfig (Running this command will allow your system to see the unixODBC shared libraries)
Step 12. Add the unixODBC drivers that you want to use to the /usr/local/etc/odbcinst.ini file.
Here is an example of an odbcinst.ini file.

[MySQL]
Description     = MySQL Driver
Driver          = /usr/local/lib/libmyodbc.so
Setup           = /usr/local/lib/libodbcmyS.so
FileUsage       = 1

[PostgreSQL]
Description     = PostgreSQL Driver
Driver          = /usr/local/lib/libodbcpsql.so
Setup           = /usr/local/lib/libodbcpsqlS.so
FileUsage       = 1

Step 13. Add your Data Source Names to /usr/local/etc/odbc.ini Here is an example of a odbc.ini with two Data Source Names - PostgreSQL and MySQL
[PostgreSQL]
Description		= PostgreSQL
Driver			= PostgreSQL
Trace			= No
TraceFile		= 
Database		= test
Servername		= localhost
UserName		= postgres
Password		= mypass
Port			= 5432
Protocol		= 6.4
ReadOnly		= No
RowVersioning		= No
ShowSystemTables	= No
ShowOidColumn		= No
FakeOidIndex		= No
ConnSettings		= 

[MySQL]
Description		= MySQL
Driver			= MySQL
Trace			= Yes
TraceFile		= /tmp/mysql.odbc.log
Server			= localhost
Port			= 3306
Database		= deskware
User			= root
Password		= mypass





Installing unixODBC with the GUI

Step 1. Download QT Free Edition from here.
Step 2. Copy or move the qt-2.0.2.tar.gz file to /usr/local
Step 3. gunzip qt-2.0.2.tar.gz
Step 4. tar -xvf qt-2.0.2.tar
Step 5. mv qt-2.0.2 qt
Step 6. Set the following environment variables in your .profile or .login depending on the shell you are using.
    In .profile (if your shell is bash,ksh,zsh or sh),add the
    following lines:

        QTDIR=/usr/local/qt
        PATH=$QTDIR/bin:$PATH
        if [ $MANPATH ]
        then
                MANPATH=$QTDIR/man:$MANPATH
        else
                MANPATH=$QTDIR/man
        fi
        if [ $LD_LIBRARY_PATH ]
        then
                LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
        else
                LD_LIBRARY_PATH=$QTDIR/lib
        fi
        LIBRARY_PATH=$LD_LIBRARY_PATH
        if [ $CPLUS_INCLUDE_PATH ]
        then
                CPLUS_INCLUDE_PATH=$QTDIR/include:$CPLUS_INCLUDE_PATH
        else
                CPLUS_INCLUDE_PATH=$QTDIR/include
        fi

        export QTDIR PATH MANPATH LD_LIBRARY_PATH LIBRARY_PATH
        export CPLUS_INCLUDE_PATH

    In .login (in case your shell is csh or tcsh),add the following lines:

        if ( ! $?QTDIR ) then
            setenv QTDIR /usr/local/qt
        endif
        if ( $?PATH ) then
            setenv PATH $QTDIR/bin:$PATH
        else
            setenv PATH $QTDIR/bin
        endif
        if ( $?MANPATH ) then
            setenv MANPATH $QTDIR/man:$MANPATH
        else
            setenv MANPATH $QTDIR/man
        endif
        if ( $?LD_LIBRARY_PATH ) then
            setenv LD_LIBRARY_PATH $QTDIR/lib:$LD_LIBRARY_PATH
        else
            setenv LD_LIBRARY_PATH $QTDIR/lib
        endif
        if ( ! $?LIBRARY_PATH ) then
            setenv LIBRARY_PATH $LD_LIBRARY_PATH
        endif
        if ( $?CPLUS_INCLUDE_PATH ) then
            setenv CPLUS_INCLUDE_PATH $QTDIR/include:$CPLUS_INCLUDE_PATH
        else
            setenv CPLUS_INCLUDE_PATH $QTDIR/include
        endif

        
    After you have done this,you will need to login again,or
    re-source the profile before continuing,so that at least $QTDIR
    is set.  The installation will give an error message and not
    proceed otherwise.

Step 7. cd qt
Step 8. ./configure
Step 9. make
Step 10. Download unixODBC from here.
Step 11. Copy or move the unixODBC*.tar.gz to /usr/local
Step 12. gunzip unixODBC*.tar.gz
Step 13. tar xvf unixODBC*.tar
Step 14. cd unixODBC*
Step 15. ./configure
Step 16. make
Step 17. make install
Step 18. cd /etc
Step 19. Edit the file ld.so.conf and add "/usr/local/lib" to it.
Step 20. ldconfig (Running this command will allow your system to see the unixODBC shared libraries)
Step 21. Add the unixODBC drivers that you want to use to the /usr/local/etc/odbcinst.ini file.
Here is an example of an odbcinst.ini file.

[MySQL]
Description	= MySQL Driver
Driver		= /usr/local/lib/libmyodbc.so
Setup		= /usr/local/lib/libodbcmyS.so
FileUsage	= 1

[PostgreSQL]
Description	= PostgreSQL Driver
Driver		= /usr/local/lib/libodbcpsql.so
Setup		= /usr/local/lib/libodbcpsqlS.so
FileUsage	= 1

Step 22. Add your Data Source Names to /usr/local/etc/odbc.ini Here is an example of a odbc.ini with two Data Source Names - PostgreSQL and MySQL
[PostgreSQL]
Description		= PostgreSQL
Driver			= PostgreSQL
Trace			= No
TraceFile		= 
Database		= test
Servername		= localhost
UserName		= postgres
Password		= mypass
Port			= 5432
Protocol		= 6.4
ReadOnly		= No
RowVersioning		= No
ShowSystemTables	= No
ShowOidColumn		= No
FakeOidIndex		= No
ConnSettings		= 

[MySQL]
Description		= MySQL
Driver			= MySQL
Trace			= Yes
TraceFile		= /tmp/mysql.odbc.log
Server			= localhost
Port			= 3306
Database		= deskware
User			= root
Password		= mypass





unixODBC non-GUI Component

isql is a command line tool that allows you to connect to your data sources,send SQL commands to the data source,and receive results from the data source. You can execute it by typing "/usr/local/bin/isql ".




unixODBC GUI Components

ODBCConfig is a tool is designed to allow you to easily setup a Data Source Name. You can execute it by typing "/usr/local/bin/ODBCConfig".



DataManager is a graphical tool for exploring data sources. You can execute it by typing "/usr/local/bin/DataManager".




unixODBC Drivers

unixODBC comes with drivers for MiniSQL,PostgreSQL,News Server,and SQI. A MySQL unixODBC driver can be found here.


Resources for unixODBC Drivers

Company unixODBC Driver Data Source
PostgreSQL
http://www.postgresql.org
PostgreSQL Driver included with unixODBC PostgreSQL
T.C.X DataKonsult AB
Fax: +46-8-7296905
http://www.mysql.com/download_myodbc.html
MyODBC Driver for unixODBC MySQL
YARD Software GmbH
Tel.: +49 221 98664-0 Fax.: +49 221 98664-99
http://www.yard.de
YARD unixODBC Driver YARD-SQL
Hughes Technologies
Fax: +61 7 5529 2299
http://www.Hughes.com.au/
MiniSQL Driver included with unixODBC MiniSQL
SQI Text File Driver
SQL unixODBC Driver for Text Files Text Files
Ke Jin's Net News ODBC Driver
Internet News Server Driver included with unixODBC Internet News Server
Easysoft
Tel: +44 (0) 113 222 0400 Fax: +44 (0) 113 222 0500
http://www.easysoft.com/
Easysoft's ODBC-ODBC Bridge ODBC-ODBC



Example SQL Statements with CobolScript

      
       CREATE TABLE                                                              
           exec sql                                                              
              create table customer                                              
              ( firstname   varchar(20),lastname    varchar(20),description varchar(50))                                         
           end-exec.                                                             
                                                                                 
       INSERT                                                                    
           exec sql                                                              
              insert into customer                                               
              values (:customer-first-name,:customer-last-name,:customer-description)                                     
           end-exec.                                                             
                                                                                 
       DELETE                                                                    
           exec sql                                                              
               delete from customer                                              
               where firstname = 'dean6'                                         
           end-exec.                                                             
                                                                                 
       UPDATE                                                                    
           exec sql                                                              
              update customer                                                    
              set description = 'update test again'                              
              where firstname = :customer-first-name and                         
                    lastname  = :customer-last-name                              
           end-exec.                                                             
                                                                                 
       SELECT                                                                    
           exec sql                                                              
               select firstname,lastname,description                       
               into :customer-first-name,:customer-description                                        
               from customer                                                     
               where firstname = 'dean8   '                                      
           end-exec.                                                             
                                                                                 
       DECLARE 
  
  
   
                                                        
                 exec sql                                                        
                      declare cust_cursor cursor for                             
                      select firstname,dollar_amount                            
                      from customer                                              
                      order by firstname                                         
                 end-exec.                                                       
                                                                                 
       OPEN 
   
   
     exec sql open cust_cursor end-exec. CLOSE 
    
      exec sql close cust_cursor end-exec. FETCH exec sql fetch relative :row-position cust_cursor into :customer-first-name,:customer-dollar-amount end-exec. FETCH Syntax: FETCH {NEXT | PRIOR | FIRST | LAST | ABSOLUTE {int-constant | host-constant } | RELATVIE {int-constant | host-constant }} cursor-name INTO host-variable [,...] COMMIT exec sql commit end-exec. ROLLBACK exec sql rollback end-exec. 
     
   
  
  



A Sample CobolScript Program using a MySQL Database

       1 misc.
          5 data-source-name       pic x(50).
          5 user-id                pic x(10).
          5 password               pic x(10).
          5 return-code            pic s9(05).
          5 row-position           pic s9(05).
          5 formatted-balance      pic $$$,$$$.99.
       1 customer-table.
          5 customer-first-name    pic x(20).
          5 customer-last-name     pic x(20).
          5 customer-description   pic x(70).
          5 customer-balance       pic 9(06).99.
       1 sql-return-codes.
          5 sqlstate               pic x(05).
          5 sqlnativeerror         pic s9(06).
          5 sqlerrormessage        pic x(500).
          5 sqlstatement           pic x(500).
       main.
           perform connect_to_database.
           perform create_table.
           perform alter_table.
           perform create_index.
           perform insert_into_table.
           perform select_from_table.
           perform build_cursor.
           perform update_table.
           perform delete_from_table.
           perform drop_index.
           perform drop_table.
           perform disconnect_from_database.
           stop run.
       connect_to_database.
           move `MySQL`      to data-source-name.
           move `testuser`   to user-id.
           move `testpass`   to password.
           opendb using      data-source-name
                             user-id
                             password
                             return-code.
       create_table.
           exec sql
              create table customer 
              (firstname   varchar(20),description varchar(70)  )
           end-exec.
       alter_table.
           exec sql
              alter table customer add
                balance decimal(6,2) 
           end-exec.
       create_index.
           exec sql
              create index cust_index on customer (firstname)
           end-exec.
       insert_into_table.
           exec sql
              commit
           end-exec.
           move `John`  to customer-first-name.
           move `Doe`  to customer-last-name.
           move `Senior Director at ACME Software House` to customer-description.
           move 99.95 to customer-balance.
           exec sql
              insert into customer
              values (:customer-first-name,:customer-description,:customer-balance )
           end-exec.
           exec sql
              insert into customer
              values ('Jane','Doe','Senior Programmer',123.95 )
           end-exec.
           exec sql
              insert into customer
              values ('Matt','Junior Programmer',23.00 )
           end-exec.
           exec sql
              insert into customer
              values ('Charles','GEM Programmer',199.99 )
           end-exec.
           exec sql
              commit
           end-exec.
           exec sql
              insert into customer
              values ('Jason','Programmer',99.00 )
           end-exec.
           exec sql
              rollback
           end-exec.
       select_from_table.
           exec sql
               select firstname,description,balance
               into :customer-first-name,:formatted-balance
               from customer
               where lastname = 'Doe' and
                     firstname = 'Charles'
           end-exec.
           if sqlnativeerror = 0 then
              display `select into statement successful`
              display `firstname: ` & customer-first-name
              display `lastname: ` & customer-last-name
              display `description: ` & customer-description
              display `balance: ` & formatted-balance
           else
              display `select into statement failed`
              display `sql-return-codes: ` & sql-return-codes
           end-if.
       build_cursor.
           exec sql
                declare cust_cursor cursor for
                select firstname,balance
                from customer
               order by balance
           end-exec.
        open_cursor.
           exec sql
                open cust_cursor
           end-exec.
        fetch_cursor.
           display ``.
           display `firstname            lastname                balance`.
           display `----------------------------------------------------`.
           exec sql
              fetch last cust_cursor
              into :customer-first-name,:formatted-balance
           end-exec.
           if sqlnativeerror = 0 then
              display customer-first-name & ` ` & customer-last-name & ` ` & formatted-balance
           end-if.
           move -1 to row-position.
           exec sql
              fetch relative :row-position  cust_cursor
              into :customer-first-name,:formatted-balance
           end-exec.
           if sqlnativeerror = 0 then
              display customer-first-name & ` ` & customer-last-name & ` ` & formatted-balance
           end-if.
           perform fetch-data-from-database
              until sqlnativeerror = 100.
           display `----------------------------------------------------`.
           display ``.
           exec sql
                close cust_cursor
           end-exec.
           if sqlnativeerror = 0 then
              display `close cursor successful`
           else
              display `close cursor failed`
              display `sql-return-codes: ` & sql-return-codes
           end-if.
       fetch-data-from-database.
           exec sql
              fetch next cust_cursor
              into :customer-first-name,:formatted-balance
           end-exec.
           if sqlnativeerror = 0 then
              display customer-first-name & ` ` & customer-last-name & ` ` & formatted-balance
           end-if.
       update_table.
           move `Doe` to customer-last-name.
           exec sql
              update customer
              set lastname = 'Jones'
              where firstname = 'Matt' and
                    lastname  = :customer-last-name
           end-exec.
           exec sql
              commit
           end-exec.
       delete_from_table.
           exec sql
               delete from customer
               where firstname = 'Charles' and lastname = 'Doe'
           end-exec.
           exec sql
              commit
           end-exec.
       drop_index.
           exec sql
              drop index cust_index on customer
           end-exec.
       drop_table.
           exec sql
              drop table customer
           end-exec.
       disconnect_from_database.
           closedb using return-code.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读601次。Oracle的数据导入导出是一项基本的技能,但是对于懂数据库却不熟悉Oracle的同学可能会有一定的障碍。正好在最近的一个项目中碰到了这样一个任务,于是研究了一下Oracle的数据导入导出,在这里跟大家分享一下。......_oracle 迁移方法 对比
文章浏览阅读553次。开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共700多人左右 1 + 2)。最近我们在使用MYSQL 8 的情况下(8.025)在数据库运行中出现一个问题 参数prefer_order_i..._mysql prefer_ordering_index
文章浏览阅读3.5k次,点赞3次,收藏7次。折腾了两个小时多才成功连上,在这分享一下我的经验,也仅仅是经验分享,有不足的地方欢迎大家在评论区补充交流。_navicat连接opengauss
文章浏览阅读2.7k次。JSON 代表 JavaScript Object Notation。它是一种开放标准格式,将数据组织成中详述的键/值对和数组。_postgresql json
文章浏览阅读2.9k次,点赞2次,收藏6次。navicat 连接postgresql 注:navicat老版本可能报错。1.在springboot中引入我们需要的依赖以及相应版本。用代码生成器生成代码后,即可进行增删改查(略)安装好postgresql 略。更改配置信息(注释中有)_mybatisplus postgresql
文章浏览阅读1.4k次。postgre进阶sql,包含分组排序、JSON解析、修改、删除、更新、强制踢出数据库所有使用用户、连表更新与删除、获取今年第一天、获取近12个月的年月、锁表处理、系统表使用(查询所有表和字段及注释、查询表占用空间)、指定数据库查找模式search_path、postgre备份及还原_pgsql分组取每组第一条
文章浏览阅读3.3k次。上一篇我们学习了日志清理,日志清理虽然解决了日志膨胀的问题,但就无法再恢复检查点之前的一致性状态。因此,我们还需要日志归档,pg的日志归档原理和Oracle类似,不过归档命令需要自己配置。以下代码在postmaster.c除了开启归档外,还需要保证wal_level不能是MINIMAL状态(因为该状态下有些操作不会记录日志)。在db启动时,会同时检查archive_mode和wal_level。以下代码也在postmaster.c(PostmasterMain函数)。......_postgresql archive_mode
文章浏览阅读3k次。系统:ubuntu22.04.3目的:利用向日葵实现windows远程控制ubuntu。_csdn局域网桌面控制ubuntu
文章浏览阅读1.6k次。表分区是解决一些因单表过大引用的性能问题的方式,比如某张表过大就会造成查询变慢,可能分区是一种解决方案。一般建议当单表大小超过内存就可以考虑表分区了。1,继承式分区,分为触发器(trigger)和规则(rule)两种方式触发器的方式1)创建表CREATE TABLE "public"."track_info_trigger_partition" ( "id" serial, "object_type" int2 NOT NULL DEFAULT 0, "object_name..._pg数据表分区的实现
文章浏览阅读3.3k次。物联网平台开源的有几个,就我晓得的有、、thingskit、JetLink、DG-iot(还有其他开源的,欢迎在评论区留言哦!),然后重点分析了下ThingsBoard、ThingsPanel和JetLink,ThingsBoard和Jetlinks是工程师思维产品,可以更多的通过配置去实现开发的目的,ThingsPanel是业务人员思路产品,或者开发或者用,避免了复杂的配置带来的较高学习门槛。ThingsBoard和Jetlinks是Java技术体系的,ThingsPanel是PHP开发的。_jetlinks和thingsboard
文章浏览阅读3.8k次。PostgreSQL 数据类型转换_pgsql数字转字符串
文章浏览阅读7k次,点赞3次,收藏14次。在做数据统计页面时,总会遇到统计某段时间内,每天、每月、每年的数据视图(柱状图、折线图等)。这些统计数据一眼看过去也简单呀,不就是按照时间周期(天、月、年)对统计数据进行分个组就完了嘛?但是会有一个问题,简单的写个sql对周期分组,获取到的统计数据是缺失的,即没有数据的那天,整条记录也都没有了。如下图需求:以当前月份(2023年2月)为起点,往后倒推一年,查询之前一年里每个月的统计数据。可见图中的数据其实是缺少的,这条sql只查询到了有数据的月份(23年的1月、2月,22年的12月)_如何用一条sql查出按年按月按天的汇总
文章浏览阅读3.8k次,点赞66次,收藏51次。PostgreSQL全球开发小组与2022年10月13日,宣布发布PostgreSQL15,这是世界上最先进的开源数据库的最新版本_mysql8 postgresql15
文章浏览阅读1.3k次。上文介绍了磁盘管理器中VFD的实现原理,本篇将从上层角度讲解磁盘管理器的工作细节。_smgrrelationdata
文章浏览阅读1.1k次。PostgreSQL设置中文语言界面和局域网访问_postgressql汉化
文章浏览阅读4.2k次。PostgreSQL 修改数据存储路径_如何设置postgresql 数据目录
文章浏览阅读4.7k次。在项目中用到了多数据源,在连接postgres数据库时,项目启动报错,说数据库连接错误,说dual不存在,网上好多教程都是说数据库查询的时候的大小写问题,而这个仅仅是连接,咋鞥却处理方法是修改application-dev.yml中的配置文件.项目中的druid参数是这样的:确实在配置文件中有个查询语句。_relation "dual" does not exist
文章浏览阅读4.9k次。PostgreSQL是一款强大的关系型数据库,但在实际使用过程中,许多用户经常会遇到慢SQL的问题。这些问题不仅会降低数据库性能,还会直接影响业务流程和用户体验。因此,本文将会深入分析PostgreSQL慢SQL的原因和优化方案,帮助用户更好地利用这个优秀的数据库系统。无论你是初学者还是专业开发者,本文都将为你提供实用的技巧和方法,让你的PostgreSQL数据库始终保持高效快速。_postgresql数据库优化
文章浏览阅读1.6k次。Linux配置postgresql开机自启_linux 启动pgsql
文章浏览阅读2k次。本篇介绍如何在centos7系统搭建一个postgresql主备集群实现最近的HA(高可用)架构。后续更高级的HA模式都是基于这个最基本的主备搭建。_postgresql主备