Accessing database in a different os

My java application runs in a unix machine. the database (sql) is in a windows nt machine. Can i access the database. If so what modification should i do?

Hello
First, what kind of database are you using? Is a JDBC driver available. Maybe you look at the web-page of your database manufacturer.
Second, are you likely to use the JDBC API. You can find documentation for this in the Java API documentation in the package 'java.sql'.
Third, do you have any restrictions like firewall/proxy or whatever what prohibits you to establish a TCP connection between your Unix and your Windows machine?
In principle, the JDBC can be used to access a database, regardless where your database is located (as long as you can provide an URL to your database) and regardless what OS your database is running on. Furthermore, your host running the database even doesn't need to have Java installed because the JDBC is an interface to the native database protocol.
Please, if you can provide more information, maybe I can help you more detailed.

Similar Messages

  • APEX Application accessing data from two different databases

    Hi All,
    Currently as we all know that APEX Application resides in database and is connected to the schema of that database.
    I want APEX Application to be running and accessing data from two different databases. Elaborating my question,
    Currently, my APEX Production Application is connected with XXXX Schema of DB1 Database(Where APEX Resides). Now I want to add some pages into this APEX Application for REPORT Purpose, But I want to connect this REPORT APEX Pages to get data from Different Schema YYYY for Database DB2.
    Is it possible to configure this scenario?
    The reason for doing this is to avoid the REPORT related (adhoc queries) resource utilization effect on Production DB1 Database.
    Thanks
    Nil

    1. If you do the joining of two or more tables in DB1 then all data is pulled over to DB1 and then the join is executed: so more data over the databaselink and more work for DB1. Better keep the joining stuff where the data resides and just pull exactly that data over that you need.
    2. Don't know about your different block sizes. Seems a nice question for one of the other forums (DBA or SQL).
    3. I mean create synonyms on DB1 for reports VIEWS in DB2.
    Hope all is clear!

  • Accessing the same database file using different handles/cursors

    Will there be any problems accessing the same database file using different DB handles in a transactional environment? We have implemented a process which have multiple transient threads coming up and initiating DB opens and read/write operations to the same database file using different handles and cursors?
    Can this potentially create any problems/bottlenecks? Can someone suggest the best way to deal with this scenario?
    Thanks in advance.
    SB

    Hi,
    Berkeley DB is well suited to the scenario you describe. You need to ensure that Berkeley DB is configured correctly for transactional access, the best information describing the requirements is in the Reference guide here:
    http://download.oracle.com/docs/cd/E17076_02/html/programmer_reference/transapp.html
    If there will be multiple threads operating concurrently, then you will need to design your application to detect and deal with deadlock situations.
    Regards,
    Alex Gorrod
    Oracle Berkeley DB

  • Is it possible to access a database on a different  server?

    Hi Folks
    Forgive me if this has been asked already. We are in the
    process of moving one of our sites to a new server. It will reside
    there alone. I have several Access databases that are shared
    between two different websites. Now these sites will reside on two
    different servers. Is there any way to access one Access database
    that resides on one server from another server? The good part is
    the second sever will be using the data for read-only outputs.
    Thanks in advance for any help you can priocdie.
    John

    MS Access is not really intended for networking in this
    manner, and I would imagine that you would have problems with
    locking contention at the very least with two CF servers vying for
    access. Also, another major problem with attempting to set up an
    Access DSN where the ColdFusion server is on a different machine
    from the Access database is file permission. Normally, ColdFusion
    is setup on its server under an administrator account, so if you
    attempt to connect to an Access database on another server over a
    mapped network drive, the admin account on your CF server usually
    does not have the appropriate privileges on the machine hosting the
    Access database. This usually requires you to install CF under a
    user account that has privileges on both machines. (There have been
    tech notes on this subject in the past.)
    Bottom line, not a good idea at all. I would seriously
    consider migrating to anything but Access for these and many other
    reasons, the least of which is that Access is usually not suitable
    for anything but a development or prototype environment.
    Phil

  • What permission is needed for a login to access the restored database(backup from different server)

    what permission is needed for a login to access the restored database(backup from different server)
    frequently reach the situation, when vendor restores a database, but he cannot access it unless I remap or add his login to the restored database. What permssion can grant the vendor so that he can but only can access the database he restored, not all other
    databases.

    Hi George,
    According to your description, When you move a database from one server that is running SQL Server to another server that is running SQL Server, a mismatch may occur between the security identification numbers (SIDs) of the logins in the master database
    and the users in the user database. As other post, you can use the sp_change_users_login stored procedure to map SQL Server logins. Also , you can use the following statement after doing the restore database. It will
     fix the mis-mapped SID inside the restored DB.
    ALTER USER <username> WITH LOGIN = <username>
    For more information, you can review the following article.
    http://blogs.lessthandot.com/index.php/DataMgmt/DBAdmin/MSSQLServerAdmin/do-you-still-use-sp_change_users_login/
    Regards,
    Sofiya Li
    Sofiya Li
    TechNet Community Support

  • Unable to Publish Access database to SharePoint site in 2013

    I have a user requesting to publish access (2007/2010) web database into SharePoint 2013. I am able to publish this database on all sites under one site collection (test) but fails on the other site (different site collection). I have compared site collection
    and site features and both site collection (working and non-working one) has SharePoint Server Enterprise Site features enabled. Is there any other features that should be turned on? 
    Initially it looks it has succeded but then give mesesage
    "Publish Failed - Your application has encountered errors while attempting to publish. The publish operation has failed and the target site has not been created. For more details, see the following tables
    Moveto SharePoint Site Issues"
    Move to SharePoint Site Issues
    Issue
    Reason
    Object Type
    Object Name
    Field Name
    There was an error uploading properties and/or data macros on this table.
    Table
    mytab
    Errors have prevented one or more tables from being uploaded to the server.
    Table
    Could not save this object's changes to the server. You must enter a value in the 'Name' field.
    Navigation Pane
    Navigation Pane
    Could not save this object's changes to the server. You must enter a value in the 'Name' field.
    VBA Properties
    VBA References
    Could not save this object's changes to the server. You must enter a value in the 'Name' field.
    Database Properties
    DBProps
    Could not save this object's changes to the server. You must enter a value in the 'Name' field.
    Theme
    Office Theme
    <tfoot></tfoot>
    I am unable to make any sense as it's one empty table and able to publish same table on another site (under different site collection). 
    MK Sin

    Hi MK,
    According to your description, my understanding is that you got an error when you published Access database to SharePoint 2013.
    Please deactivate SharePoint Server Enterprise Site Collection features at site collection level and deactivate SharePoint Server Enterprise Site features at site level, then activate them again, compare the result.
    Per the error message, please type a value in the ‘Name’ filed, then publish the table, compare the result.
    In addition, here is a similar article, please check whether it is useful for you:
    http://support.microsoft.com/kb/2711562
    I hope this helps.
    Thanks,
    Wendy
    Wendy Li
    TechNet Community Support

  • Access Database (.mdb) on Windows Server 2012 R2 Essentials

    Hi guys, thanks for your time!
    SCENARIO:
    - Windows Server 2012 R2 Essentials
    - Windows 7 Ultimate Clients (3 clients)
    - VB6 application on clients using a MS Database (.mdb) hosted on the server.  
    - Clients access the database (.mdb) via a mapped network drive (K:).
    PROBLEM:
    - Microsoft Database (.mdb) on server gets corrupted frequently.
    - Clients don't "flush their changes" back to the database: database was not updated.
    WORKAROUND:
    - Database was moved from the server to one of the Windows 7 clients.
    - Application is running OK.
    CONFIGURATION:
    - Permissions are correct: network and NTFS.
    - No faulty network hardware: switch, cabling, NICs.
    - Computers and Server hardware is new.
    - UPS are used everywhere.
    SOME LINKS:
    SMB 3.0 
    - Opportunistic Locking and Read Caching on Microsoft Windows Networks.
    - Windows 7 cannot
    open the shared MS Access database if it's opened by another user
    - Initializing the
    Microsoft Jet 4.0 Database Engine Driver
    - Moved to
    Server 2012 getting Access Database Corruption
    Oplocks
    - Configuring
    opportunistic locking in Windows
    - Understanding
    offline files
    - How to
    enable and disable SMBv1, SMBv2, and SMBv3
    - Is it possible to
    monitor and log actual queries against an Access MDB?
    Now, server is useless if it is not hosting our database. Any ideas, please? Do I need to diagnose using Wireshark? Or using Sysinternals Process Monitor? I think that is a waste of time. 
    Thank you! 

    Thanks for your reply.
    Software is from a 3rd party provider. It currently supports concurrency. It was deployed on Windows XP. SQL Server would be a nice upgrade, however that is
    not an option.
    Something has changed with newer versions of Windows. That is what I am going to study in a lab I prepared with a real server and some clients.
    File-sharing databases (Microsoft JET databases) are very old technology even before I was a college student. However, I have been very busy researching this technology.
    It was made for multi-user environments. It is highly tied to file sharing services from Windows: SMB protocol.
    Windows XP, Vista, 7 and 8 use different versions of this protocol. I think that is the root of the problem. With old technology, application was running fine.
    With new technology, application is troublesome. I will check several things: JET drivers vs. ACE drivers, SMB tweaks, etc.
    UPDATE:
    Basically, there are 4 general answers to this issue:
    1) Migrate your Access Database to SQL Server Express (or another RDBMS engine).
    2) @Server: disable SMB 2.0/3.0 protocol stack by powershell command. Network speed decreases.
    3) @Clients: disable client redirector caches by using regedit.
    4) @Server: disable the leasing on the file server. 
    5) @Server: tuning Broadcom NIC parameters.
    References:
    - https://technet.microsoft.com/en-us/library/ff686200(WS.10).aspx
    - https://msdn.microsoft.com/en-us/library/windows/desktop/aa365433(v=vs.85).aspx
    - http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Windows/Q_28482197.html
    - http://tipsntricks.sherr.co.uk/stop-smb-corrupting-files/
    - http://www.dataaccess.com/whitepapers/opportunlockingreadcaching.html
    - https://social.technet.microsoft.com/forums/windowsserver/en-US/67baa9fd-5eaf-438e-9cc4-dc1a531b9e19/disabling-oplocksmb2-vs-fileinfocachelifetime
    - https://social.technet.microsoft.com/Forums/windowsserver/en-US/7336d31b-6c24-468a-9c47-750244ae3a8c/moved-to-server-2012-getting-access-database-corruption
    - https://social.technet.microsoft.com/Forums/en-US/e9567167-22db-4b8c-9f96-a08b97d507f9/server-2012-r2-file-server-stops-responding-to-smb-connections
    - http://support2.microsoft.com/kb/2957623
    - http://support2.microsoft.com/kb/2899011
    - http://support2.microsoft.com/kb/2955164
    - https://social.technet.microsoft.com/Forums/en-US/7bd0aa5b-eb95-40a8-a56d-c6013273665c/extremely-slow-smb-network-speed-server-2012-r2?forum=winserver8gen

  • Is it possible to Install the 64-bit Microsoft Access Database Engine 2010 if we are running Microsoft Office 2010 32-bit?

    So we are running Microsoft Office Professional Plus 2010, Version 14.0.7015.1000
    (32-bit)
    This is what is installed via our Network and Network licensing.
    I am trying, in vain, to read and write a .xlsx file via a C# Edit Script in a SSIS Package. And I have tried using...
    string StringConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sourceFile + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\"";
    And this tells me that this has not been installed. So when I go and try and get the Microsoft Access Database Engine 2010 64-bit, which would allow me to use Microsoft.ACE.OLEDB.12.0 and allow me to read, write, and process this .xlsx file, it tells me
    I cannot install it because I already have 32-bit installed and it wants me to un-install Microsoft Office 2010. Why? Because it is 32-bit? And I can't do that because this is what we have and what we're licensed for and from what I've read seems to be the
    industry standard because most software vendors are ill equipped to process 64-bit right now.
    So my question is this...How can I use a C# Edit Script to read and process a .xlsx file? Because if I try using...
    string StringConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sourceFile + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
    It then tells me that the file is not in that format.
    Please excuse me for asking this question in a couple of different ways out here but I cannot for the life of me seem to be able to get an answer as to how I can process a .xlsx file with a C# script and which driver to use that will make this work.
    Thanks for your review and am hopeful for a reply.
    ITBobbyP85

    Hi ITBobby85,
    If the excel version in the Connection Manager is Microsoft Excel 2010 (.xlsx), we should use Microsoft.ACE.OLEDB provider.
    We can't install 32bit and 64bit parts of office on the same machine. We will get an error as you said when we run the installer to install the 64bit version of the Microsoft Access Database Engine 2010 Redistributable in the machine where a 32bit version
    of Microsoft Office installed. To fix this issue, please download and install the 32bit version of the Microsoft Access Database Engine 2010 Redistributable with the link below:
    http://www.microsoft.com/en-us/download/details.aspx?id=13255
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • Only one user at a time allowed to open MS Access database on a Mac share

    I have an issue trying to open a Microsoft Access database from our Mac OS X Server running on XServe.
    The MS Access file is stored on a Share Point on the XServe. Windows XP clients open the database. The problem is that it will only allow one user at a time to open the file. The has previously been operating fine when it was stored on a Windows server.
    The Group's permissions for this Share Point allow Read & Write.
    Any thoughts would be much appreciated.

    I think you're being misled a bit by the interface: the checkbox labelled "Strict locking" doesn't just allow strict locking, it requires it (and thus disallows byte-range locking). That is, with strict locking enabled, any client that tries to lock any part of the file actually locks the entire file. Access normally depends on byte-range locking to allow different clients to share the database (as long as they aren't trying to modify the same part of it at the same time), but with strict locking the first client locks all others out.

  • Getting the table names in an MS Access database

    Hi,
    I am new to JDBC and making a client/server application that updates a MS Access database through jdbc:odbc.
    I need to get a list of existing user tables in the db. I have found a great document on the net which has the code, however the code doesn't work. I have tried different ways and looked every where with no success. (link to the doco: http://www-128.ibm.com/developerworks/opensource/library/j-jdbc-objects/)
    Here is my dbManager class that handles all db related services in my application. I would appreciate any help I can get as I have exhusted all my avenues.
    Thanks
    Sep,
    * dbManager.java
    * Created on 31 October 2005, 10:20
    * To change this template, choose Tools | Options and locate the template under
    * the Source Creation and Management node. Right-click the template and choose
    * Open. You can then make changes to the template in the Source Editor.
    import java.io.*;
    import java.sql.*;
    import java.util.regex.*;
    * @author AUMahdavSe
    public class dbManager {
        /** Constant Declaration                */
        public static final String Driver = "sun.jdbc.odbc.JdbcOdbcDriver";
        public static final
            String sqlCreateTable = "create table TABLENAME (" +
                "name varchar (100)," +
                "surname varchar(100)," +
                "computerType integer," +
                "computerNAL varchar(20)," +
                "haveMonitor integer," +
                "monitorNAL varchar (20)," +
                "auditDate varchar(10) );";
        public static final String sqlUpdateTable = "insert into TABLENAME values" +
                " (NAMEHOLDER, SURNAMEHOLDER, COMPTYPE, COMPNAL, HAVEMON, MONNAL);";
        /** Attributes                          */
        private String dbURL = "jdbc:odbc:";
        private String Username = "admin";  // user input
        private String Password = "purina123";  // user input
        private String ODBCDataSource;  // config file
        private String dbPath;  // set through config file or defaults to current folder
        private String configFile = "config.txt"; // set either at commandline or defaults to current folder
        private Connection con = null;
        private Statement stmt = null;
        private ResultSet tables;
        private DatabaseMetaData dma;
        private ResultSetMetaData rsmd;
        private String CurrentAuditTable = "TestTable2";
        int numCols, i;
        /** Set Methodes                        */
        public void setUsername( String usr ) {
            this.Username = usr;
        public void setPassword( String pswd ) {
            this.Password = pswd;
        public void setDbPath( String path ) {
            this.dbPath = path;
        public void setODBCDataSource( String ds ) {
            this.ODBCDataSource = ds;
        public void setDbURL( String dsname ) {
            this.dbURL = this.dbURL + dsname;
        /** Get Methodes                        */
        public String getDriver() {
            return this.Driver;
        // can be run only after a connection obj is setup
        public void getMDA() {
            try {
                this.dma = this.con.getMetaData();           
            catch (SQLException ex) {
                System.err.println("database connection: " + ex.getMessage());
        public void getDBTables() {
            //now dump out the names of the tables in the database
            String[] types = new String[1];
            types[0] = "TABLES"; //set table type mask
            //note the %-sign is a wild card (not '*')
            try {
                this.tables = this.dma.getTables(null, null, "%", types);
                dumpResults("--Tables--");
                this.tables.close();
                //this.listTables();
            catch (SQLException ex) {
                System.err.println("database connection: " + ex.getMessage());
            // listing tables
            /*int count = 0;
            int numCols = 0;
            //ResultSetMetaData rsmd;
            try {
                System.out.println("Listing db tables ...");
                //this.tables.beforeFirst();
                rsmd = this.tables.getMetaData();
                numCols = rsmd.getColumnCount();
                System.out.println("number of cols: " + numCols);
                boolean more = this.tables.first();
                System.out.println("this is why: " + more);
                while ( more ) {
                    count++;
                    for (int i = 1; i <= numCols; i++)
                        System.out.print( "Table-" + count + " -> " + this.tables.getString(count)+"    " );
                    System.out.println();
                    more = this.tables.next();
            catch ( SQLException ex ) {
                System.out.println( "problem listing db tables: " + ex.getMessage() );
        /** Other Methodes                      */
        // Initialize the db parameters, like driver, username, passwd, etc.
        public void dbInitialize() {
            // load configuration from config.txt (dbPath and ODBC Data Source name)
            this.loadDbConfig();
            // loadDriver
            this.loadDriver();
            // get username and password for the ODBC from user
            this.getDSSecurity();
            // populate dbURL, username and password
            this.setDbURL( this.ODBCDataSource );
            // connect to db
            this.dbConnect();
            // get db metadata
            this.getMDA();
            // get a list of tables in db
            this.getDBTables();
        // load JDBC driver
        public void loadDriver() {
            try {
                Class.forName( getDriver() );
            } catch (Exception e) {
                System.out.println("Failed to load JDBC/ODBC driver.");
                return;
        // connects to db and create a Connection obj and a Statement obj
        public void dbConnect() {
           try {
                this.con = DriverManager.getConnection (
                    this.dbURL,
                    this.Username,
                    this.Password);
                this.stmt = con.createStatement();
            } catch (Exception e) {
                System.err.println("problems connecting to "+this.dbURL);
        // creates table tblname in db
        public void CreateTable( String tblname ) {
            try {
                String sqlcommand = mergeTblName(sqlCreateTable, tblname);
                this.stmt.execute( sqlcommand );
            catch (SQLException ex) {
                System.err.println("problems with SQL statement sent to "+this.dbURL+
                    ": "+ex.getMessage());
                System.out.println("SQL Command: " + mergeTblName(sqlCreateTable, tblname) );
        // updates db with new record(s) by executing the SQL query sqlstmt
        // and closes db connection
        public void dbUpdate( String sqlstmt ) {
            try {
                // execute SQL commands to create table, insert data
                this.stmt.execute( sqlstmt );
                this.con.close();
            } catch (Exception e) {
                System.err.println("problems with SQL sent to "+this.dbURL+
                    ": "+e.getMessage());
        // list all user tables in the db
        public void listTables() {
            //now dump out the names of the tables in the database
            int count = 0;       
            try {
                System.out.println("Listing db tables ...");
                //this.tables.beforeFirst();
                while ( this.tables.next() ) {
                    count++;
                    System.out.print( "Table-" + count + " -> " + this.tables.getString(1) );
                    System.out.println();
            catch ( SQLException ex ) {
                System.out.println( "problem listing db tables: " + ex.getMessage() );
        // checks whether tbname exist in db as a table
        // this function has to be called after dbConnect
        public boolean tableExists( String tbname ) {
            boolean tbexists = false;
            //get the database metadata
            try {
                dma = con.getMetaData();           
            catch (SQLException ex) {
                System.err.println("database connection: " + ex.getMessage());
            //now dump out the names of the tables in the database
            String[] types = new String[1];
            types[0] = "TABLES"; //set table type mask
            //note the %-sign is a wild card (not '*')
            try {
                tables = dma.getTables(null, null, "%", types);
            catch (SQLException ex) {
                System.err.println("database connection: " + ex.getMessage());
            try {
                while ( tables.next() ) {
                    if ( tbname.equalsIgnoreCase( tables.getString(1) ) ) {
                        tbexists = true;
            catch ( SQLException ex ) {
                System.err.println("database connection: " + ex.getMessage());
            return tbexists;
        // merge tablename using REGEX
        public String mergeTblName( String sqlcommand, String tbname ) {
            String REGEX = "TABLENAME";
            String INPUT = sqlcommand;
            String REPLACE = tbname;
            Pattern p = Pattern.compile(REGEX);
            Matcher m = p.matcher(INPUT); // get a matcher object
            INPUT = m.replaceAll(REPLACE);
            //System.out.println(INPUT);
            return INPUT;
        // merge feildnames specific terms using REGEX
        public String mergeFldName( Message msg ) {
            String sqlcommand;
            sqlcommand = "insert into TABLENAME values" +
                    " ('" + msg.getName() + "', '" + msg.getSurname() + "', " +
                    msg.getComputerType() + ", '" + msg.getComputerNAL() + "', " +
                    msg.getHaveMonitor() + ", '" + msg.getMonitorNAL() + "', '" +
                    msg.getDateOfMsg() + "');";
            sqlcommand = mergeTblName( sqlcommand, CurrentAuditTable );
            return sqlcommand;
        // get users input char
        /**public char getChar() {
            int i = System.in.read();
            while (i != -1) {
              // here's your character
              char c = (char) i;
              i = System.in.read();
            return (char) i;
        // load the config parameters from config.txt
        public void loadDbConfig() {
            // make a file obj pointing to the config file config.txt
            File configFile = new File( this.configFile );
            //...checks on configFile are elided
            StringBuffer contents = new StringBuffer();
            //declared here only to make visible to finally clause
            BufferedReader input = null;
            try {
              //use buffering
              //this implementation reads one line at a time
              input = new BufferedReader( new FileReader(configFile) );
              String line = null; //not declared within while loop
              int count = 0;
              while (( line = input.readLine()) != null){
                //first line in config file is dbPath
                if(count == 0) this.setDbPath( line.trim() );
                //second line in config file is ODBCDataSource
                if(count == 1) this.setODBCDataSource( line.trim() );
                count++; 
                //contents.append(line);
                //contents.append(System.getProperty("line.separator"));
            catch (FileNotFoundException ex) {
                System.err.println("the file congif.txt cannot be found ...");
                System.err.print("Enter the path to db file (e.g. c:\\temp): ");
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                //  read the db path from the command-line; need to use try/catch with the
                //  readLine() method
                try {
                    this.setDbPath( br.readLine() );
                catch (IOException ioe) {
                    System.out.println("IO error trying to read user input.");
                    System.exit(1);
                System.err.print("Enter the name of the ODBC Data Source: ");
                //  read the ODBC Data Source name from the command-line; need to use try/catch with the
                //  readLine() method
                try {
                    this.setODBCDataSource( br.readLine() );
                catch (IOException ioe) {
                    System.out.println("IO error trying to read user input.");
                    System.exit(1);
                ex.printStackTrace();
            catch (IOException ex){
              //ex.printStackTrace();
            finally {
              try {
                if (input!= null) {
                  //flush and close both "input" and its underlying FileReader
                  input.close();
              catch (IOException ex) {
                //ex.printStackTrace();
            //return contents.toString();
        // get datasource security details i.e. username and password
        public void getDSSecurity() {
            // get username
            System.out.print("Enter username for the ODBC DataSource: ");
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            //  read the username from the command-line; need to use try/catch with the
            //  readLine() method
            try {
                this.setUsername( br.readLine() );
            catch (IOException ioe) {
                System.out.println("IO error trying to read username.");
                System.exit(1);
            // get password
            System.out.print("Enter password: ");
            //  read the username from the command-line; need to use try/catch with the
            //  readLine() method
            try {
                this.setPassword( br.readLine() );
            catch (IOException ioe) {
                System.out.println("IO error trying to read password.");
                System.exit(1);
        private void dumpResults(String head)
         //this is a general routine to print out
         //column headers and the contents of each column
         System.out.println(head);
          try
           //get the number of columns from the metadata
           this.rsmd = this.tables.getMetaData();      
           numCols = this.rsmd.getColumnCount();
           //print out the column names
           for (i = 1; i<= numCols; i++)
             System.out.print(rsmd.getColumnName(i)+"     ");
           System.out.println();
           //print out the column contents
           boolean more = this.tables.next();
           while (more)
             for (i = 1; i <= numCols; i++)
               System.out.print(this.tables.getString(i)+"     ");
             System.out.println();
             more = this.tables.next();
         catch(Exception e)
           {System.out.println(e.getMessage());}
        /** Creates a new instance of dbManager */
        public dbManager() {
            this.dbInitialize();
    }here is the result when I make a new dbManager obj from my server class which is a multithreaded one.
    H:\java>java EchoServer
    Enter username for the ODBC DataSource: admin
    Enter password: purina123
    Tables
    TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS
    Listening for clients on 12111...
    here is the code of my server class called EchoServer:
    import java.net.*;
    import java.io.*;
    public class EchoServer
        ServerSocket m_ServerSocket;
        dbManager haDB;
        public EchoServer() 
            // db methods to setup a jdbc connection to the database
            haDB = new dbManager();
            // list tables
            //haDB.listTables();       
            //haDB.getDBTables();
            // create table
            //haDB.CreateTable("TestTable2");
            // update table
            // server code
            try
                // Create the server socket.
                m_ServerSocket = new ServerSocket(12111);
            catch(IOException ioe)
                System.out.println("Could not create server socket at 12111. Quitting.");
                System.exit(-1);
            System.out.println("Listening for clients on 12111...");
            // Successfully created Server Socket. Now wait for connections.
            int id = 0;
            while(true)
                try
                    // Accept incoming connections.
                    Socket clientSocket = m_ServerSocket.accept();
                    // accept() will block until a client connects to the server.
                    // If execution reaches this point, then it means that a client
                    // socket has been accepted.
                    // For each client, we will start a service thread to
                    // service the client requests. This is to demonstrate a
                    // multithreaded server, although not required for such a
                    // trivial application. Starting a thread also lets our
                    // EchoServer accept multiple connections simultaneously.
                    // Start a service thread
                    ClientServiceThread cliThread = new ClientServiceThread(clientSocket, id++, haDB);
                    cliThread.start();
                catch(IOException ioe)
                    System.out.println("Exception encountered on accept. Ignoring. Stack Trace :");
                    ioe.printStackTrace();
        public static void main (String[] args)
            new EchoServer();    
        class ClientServiceThread extends Thread
            Socket m_clientSocket;        
            int m_clientID = -1;
            dbManager m_db;
            boolean m_bRunThread = true;
            ClientServiceThread(Socket s, int clientID, dbManager db)
                m_clientSocket = s;
                m_clientID = clientID;
                m_db = db;
            public void run()
                // Obtain the input stream and the output stream for the socket
                // A good practice is to encapsulate them with a BufferedReader
                // and a PrintWriter as shown below.
                BufferedReader in = null; 
                PrintWriter out = null;
                Message msg = new Message();
                // Print out details of this connection
                System.out.println("Accepted Client : ID - " + m_clientID + " : Address - " + 
                                 m_clientSocket.getInetAddress().getHostName());
                try
                    in = new BufferedReader(new InputStreamReader(m_clientSocket.getInputStream()));
                    out = new PrintWriter(new OutputStreamWriter(m_clientSocket.getOutputStream()));
                    // At this point, we can read for input and reply with appropriate output.
                    // Run in a loop until m_bRunThread is set to false
                    while(m_bRunThread)
                        // read incoming stream
                        String clientCommand = in.readLine();
                        if ( clientCommand.indexOf(",") != -1 ) {
                            msg.deserialize( clientCommand );
                            System.out.println("SQL command: " + m_db.mergeFldName(msg) );
                            m_db.dbUpdate( m_db.mergeFldName(msg) );
                            //System.out.println("Name :" + msg.getName() );
                            //System.out.println("Surname :" + msg.getSurname() );
                            //System.out.println("ComputerType :" + msg.getComputerType() );
                            //System.out.println("ComputerNAL :" + msg.getComputerNAL() );
                            //System.out.println("HaveMonitor :" + msg.getHaveMonitor() );
                            //System.out.println("Monitor NAL :" + msg.getMonitorNAL() );
                            //System.out.println("AuditDate :" + msg.getDateOfMsg() );                       
                        System.out.println("Client Says :" + clientCommand);
                        if(clientCommand.equalsIgnoreCase("quit"))
                            // Special command. Quit this thread
                            m_bRunThread = false;   
                            System.out.print("Stopping client thread for client : " + m_clientID);
                        else
                            // Echo it back to the client.
                            out.println(clientCommand);
                            out.flush();
                catch(Exception e)
                    e.printStackTrace();
                finally
                    // Clean up
                    try
                        in.close();
                        out.close();
                        m_clientSocket.close();
                        System.out.println("...Stopped");
                    catch(IOException ioe)
                        ioe.printStackTrace();
    }

    I find that taking any problem and reducing it to the simplest thing is the best way to approach it.
    Why you had to post all that bloody code (especially since you didn't write it) is beyond me.
    This will list all the tables in an Access database (or any other, for that matter):
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import org.jdom.Element;
    import org.jdom.Document;
    import org.jdom.output.XMLOutputter;
    public class TableLister
        public static final String DRIVER   = "sun.jdbc.odbc.JdbcOdbcDriver";
        public static final String DATABASE = "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\\Edu\\Java\\Forum\\DataConnection.mdb";
        public static final String USERNAME = "admin";
        public static final String PASSWORD = "";
        public static void main(String [] args)
            try
                String driver           = ((args.length > 0) ? args[0] : DRIVER);
                String url              = ((args.length > 1) ? args[1] : DATABASE);
                String username         = ((args.length > 2) ? args[2] : USERNAME);
                String password         = ((args.length > 3) ? args[3] : PASSWORD);
                Class.forName(driver);
                Connection conn         = DriverManager.getConnection(url, username, password);
                DatabaseMetaData meta   = conn.getMetaData();
                // Bring back ALL tables and views, including SYSTEM tables.
                ResultSet tables        = meta.getTables(null, null, null, null);
                ResultSetMetaData rsmd  = tables.getMetaData();
                int numColumns          = rsmd.getColumnCount();
                List columnNames        = new ArrayList();
                for (int j = 0; j < numColumns; ++j)
                    columnNames.add(rsmd.getColumnName(j+1));
                Element root = new Element("tables");
                int tableCount = 0;
                while (tables.next())
                    Element table = new Element("table");
                    table.setAttribute("id", Integer.toString(++tableCount));
                    for (int j = 0; j < numColumns; ++j)
                        Element column = new Element((String)columnNames.get(j));
                        column.setText(tables.getString((String)columnNames.get(j)));
                        table.addContent(column);
                    root.addContent(table);
                conn.close();
                Document doc = new Document(root);
                XMLOutputter outputter = new XMLOutputter("   ", true);
                System.out.println(outputter.outputString(doc));
            catch (ClassNotFoundException e)
                System.err.println("Couldn't load JDBC driver class");
                e.printStackTrace();
            catch (SQLException e)
                System.err.println("SQL state: " + e.getSQLState());
                System.err.println("SQL error: " + e.getErrorCode());
                e.printStackTrace();
            catch (Exception e)
                e.printStackTrace();
    }Run it and see if it works for you. If it does, put the essence of the code into your stuff.
    %

  • Query MS Access Database

    OK - I have a customer that wants to write out to an MS Access Database from Livecycle.  I know this is BAD but they have their reasons - i.e. they have a sever shortage of skills for anything more complex.
    Firstly - I created a Java program to test the JDBC ODBC connection - this worked fine - ran queries and updated OK (code is attached)
    Howver I have tried connecting to Access from within Livecycle in two different ways - both are failing
    Firstly - using the JNDI setup for JDBC ODBC e.g.
    <datasources>
      <local-tx-datasource>
        <jndi-name>MSAccess_DS</jndi-name>
        <!-- format of URL is "jdbc:odbc:DSNNAME" -->
        <connection-url>jdbc:odbc:DBFormData</connection-url>
        <driver-class>sun.jdbc.odbc.JdbcOdbcDriver</driver-class>
        <user-name></user-name>
        <password></password>
      </local-tx-datasource>
    </datasources>
    Calling this within a Livecycle process does not return an error to the process, but the log generates an error:
    2009-08-29 23:01:30,768 WARN  [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] Throwable while attempting to get a new connection: null
    org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.sql.SQLException: General error)
    I also tried creating a Java Component and importing it - by creating a very basic jar and importing it to livecycle (based on the same code I used in my Java testing)
    It also gave me the general error - and I can see it is happening on the line:
            Connection con = DriverManager.getConnection(dbURL, "","");
    Any ideas on what is going wrong, or a workaround?  (Assuming that I have to use Access)
    Thanks
    Tim

    OK I solved this.  This was only happening on the Win2K3 server - not on my local dev instance
    On the server I set the JBoss service to run under the local admin account (in the Services Panel) - after a service restart the jdbc odbc connection worked fine.  It must have been some permissions with the system account

  • How to reference MS Access database in ColdFusion MX 7 on 64-bit Windows

    I am migrating customers from:
    Windows 2000 Server (fully patched)
    Internet Information Services (IIS) 5
    ColdFusion 5
    to:
    Windows Server 2003 Standard x64 Edition (fully patched)
    Internet Information Services (IIS) 6 (running in 32-bit
    mode)
    ColdFusion MX 7 (7.0.2) Standard
    Unfortunately, some of these existing customers are still
    using Microsoft Access databases instead of SQL Server. Having all
    of these existing customers migrate to SQL Server is not yet
    practical. On the old Windows 2000 / ColdFusion 5 server, they are
    using OLE DB data sources to reference the MS Access databases
    using the "Microsoft.Jet.OLEDB.4.0" provider. None are configured
    to use ODBC drivers when referencing MS Access or SQL Server.
    I have yet to figure out how to get ColdFusion MX 7 to:
    - Create a data source that references MS Access databases on
    64-bit Windows.
    - Reference an existing MS Access data source created with
    the 32-bit version of the ODBC Data Source Manager on 64-bit
    Windows.
    A bit of background information regarding MS Access on 64-bit
    Windows:
    - At the time of this writing, Microsoft has not
    created/released 64-bit drivers for Microsoft Access and it's
    unlikely they ever will, for understandable reasons.
    - Contrary to seemingly popular belief, the Microsoft Jet 4.0
    Database Engine does exist on 64-bit Windows. See the following
    regarding version and file location information:
    How to obtain the latest service pack for the Microsoft Jet
    4.0 Database Engine
    http://support.microsoft.com/kb/239114
    - You CAN create MS Access based data sources within 64-bit
    Windows, but they have to be made using the 32-bit version of "ODBC
    Data Source Manager". I'm assuming these DSNs may only be used by
    32-bit applications, but I have not tested that theory.
    32-bit data sources:
    ODBC Data Source Manager:
    %SystemRoot%\SysWOW64\odbcad32.exe
    Registry location:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC
    Default file DSN directory:
    C:\Program Files (x86)\Common Files\ODBC\Data Sources
    64-bit data sources:
    ODBC Data Source Manager:
    %SystemRoot%\system32\odbcad32.exe
    Registry location:
    HKEY_LOCAL_MACHINE\SOFTWARE\ODBC
    Default file DSN directory:
    C:\Program Files\Common Files\ODBC\Data Sources
    The 64-bit version of "ODBC Data Source Manager" (under
    Administrative Tools) only show "SQL Server" and/or "SQL Native
    Client" as options when creating new data sources, unless
    third-party software is installed that supplies additional drivers.
    The 32-bit version of "ODBC Data Source Manager" (by default,
    there is no shortcut for this in the Start menu) shows the typical
    drivers seen on 32-bit versions of Windows, including SQL Server,
    SQL Native Client, Microsoft Access, Excel, FoxPro, Paradox, etc.
    When using ColdFusion Administrator in ColdFusion MX 7.0.2 in
    64-bit Windows 2003 (IIS is running in 32-bit mode to allow
    ColdFusion MX 7 to function at all), two problems are encountered
    when dealing with MS Access (and presumably other 32-bit drivers).
    In both cases, ColdFusion is trying to reference the registry
    location for 64-bit data sources instead of 32-bit:
    1. Creating a new data source within ColdFusion
    Administrator:
    Data Source Name: whatever
    Driver: Microsoft Access
    CF Data Source Name: whatever
    Database file: (physical path to whatever.mdb)
    (other settings are irrelvant for this example)
    Error generated when submitting:
    Unable to update the NT registry.
    Cannot open HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC
    Data Sources: Windows error number 5 occurred.Access is denied.
    ColdFusion stores the data source, however a "verify"
    generates the following error:
    Connection verification failed for data source: whatever
    java.sql.SQLException: [Macromedia][SequeLink JDBC
    Driver][ODBC Socket]internal error: Data source name not found and
    no default driver specified
    The root cause was that: java.sql.SQLException:
    [Macromedia][SequeLink JDBC Driver][ODBC Socket]internal error:
    Data source name not found and no default driver specified
    2. Creating the data source using the 32-bit version of "ODBC
    Data Source Manager" then trying to reference it with ColdFusion:
    ODBC Data Source Manager:
    System DSN or File DSN:
    Name: whatever
    Driver: Microsoft Access Driver (.mdb)
    Database: (physical path to whatever.mdb)
    (creation is successful within ODBC Data Source Manager)
    Reference the above DSN within ColdFusion Administrator:
    Data Source Name: whatever
    Driver: ODBC Socket
    Error generated when submitting:
    Error accessing available odbc datasources. - Cannot open
    HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources:
    Windows error 2 occurred.The system cannot find the file specified.
    ColdFusion MX 7 can't find the 32-bit data source on 64-bit
    Windows because it's looking for it in the wrong registry location.
    Can ColdFusion MX 7 be configured to look in
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC
    instead of
    HKEY_LOCAL_MACHINE\SOFTWARE\ODBC
    on a 64-bit Windows machine?

    Paul,
    Thanks for the insight on this. Regarding the initial problem
    I ran into with creating Access based DSNs, very early-on, I
    noticed there were two different driver options for Access
    displayed within ColdFusion MX 7 Administrator:
    Microsoft Access
    Microsoft Access with Unicode
    For reasons I'm am still baffled over, I somehow completely
    forgot about and through the wonders of apparent tunnel vision,
    completely overlooked the "Microsoft Access with Unicode" driver
    option when I was running through my tests.
    At your seemingly-obvious suggestion, I created a data source
    using the Microsoft Access with Unicode driver and it worked
    perfectly fine with the one customer's web site I'm using for
    testing (of course, this is a copy--the production site is still
    housed on the old ColdFusion 5 server). This obviously doesn't
    actually fix the underlying issue with ColdFusion looking in the
    wrong part of the registry on 64-bit Windows, but at least when it
    comes to dealing with Access databases, your suggestion of using
    the Microsoft Access with Unicode driver appears to be a functional
    work-around. So long as there aren't any surprises waiting for me,
    hopefully this will also work for the remaining ColdFusion sites I
    have to migrate that are using Access databases.
    Since you mentioned JDBC drivers in comparison with ODBC, I'm
    pointing out a couple of references in case they're helpful to
    anyone following this thread:
    ColdFusion MX 7 - About JDBC
    http://livedocs.adobe.com/coldfusion/7/htmldocs/00001736.htm
    Types of JDBC technology drivers
    http://java.sun.com/products/jdbc/driverdesc.html
    http://java.sun.com/products/jdbc/
    I don't actually develop anything in ColdFusion, so I'm
    dealing with all of this from a server administration standpoint
    since we do have some domain hosting customers that do develop or
    at least have existing ColdFusion based sites. I am all
    too-familiar with the caveats of using Access in any kind of
    production or heavily used environment and have spent years keeping
    users away from ODBC. For ColdFusion users, that meant creating OLE
    DB DSNs and often having to fix poorly written SQL statements and
    fixing ColdFusion date-related values and boolean values (the
    common problems encountered when switching CF / MS Access users
    from ODBC to OLE DB). I can only recall running into problems with
    a single SQL Server based ColdFusion site when migrating from ODBC
    to OLE DB. That customer never did get their many coding problems
    fixed, so they're the only ones still using ODBC in CF. I have no
    idea what'll happen when that one site gets migrated over--if it'll
    even work. Obviously a lot of things have changed between
    ColdFusion 5 and the MX versions that have come along afterward.
    Thanks again for the Access with Unicode driver tip and JDBC
    info. It looks like I can finally start moving forward again with
    the site migration process.
    Josh

  • MS access database prompting for username and  password

    Hello,
      When I try to run a crystal report that is connected to a (Access Database) from crystal server 2013, I get prompted for a username and password. Im not sure what im doing wrong, Ive tried creating a ODBC connection, change the SAP service to run under a domain user account, recreated the report with a different file path.  but still no luck, please help im at a lose.
    Thank you

    Hello,
    Refer please to the following kbas, probably this can help you :
    http://service.sap.com/sap/support/notes/1270997
    http://service.sap.com/sap/support/notes/1661997
    Regards,
    Asma

  • Conversion problems with Memo field in Access database

    I have the latest version of Migration Workbench and the Access 2000 plug-in.
    I am using an ODBC driver, and the SQL conversion requirements for converting
    to a native driver seem too time and labor intensive to be feasable.
    My problem is that I have some "Memo" columns in my Access database containing
    over 200,000 rows that I need converted to Oracle. This is something I'm going
    to need to do over-and-over again for different Access databases.
    I gave up on mapping the Access "Memo" datatypes to Oracle "Clob" datatypes. It
    was either taking forever or taking WAY too long.
    Then I tried mapping the Access "Memo" datatypes to "Varchar2(4000)" and although
    it completed it took longer than my customer will like (think 1/2 an hour just for
    all the rows of one memo column in one table).
    Finally I tried going into the original Access database and converting the "Memo"
    column into a "Text" column. It wouldn't work, I kept getting the error:
    =====
    Microsoft Access can't change the data type.
    There isn't enough disk space or memory.
    =====
    even though I had over 10GB of free disk space and only 1/3 of my memory was being
    used. I assume this is a memory-max limitation in Access 2000.
    Any suggestions for speeding the conversion? Could I stagger using Migration workbench
    to create the tables. . .then use SQL*Loader to load the data. . .then use Migration
    workbench again to put in the idexes, etc? Would this be faster even if it worked?
    Thanks,
    Aaron Chawla

    I have the latest version of Migration Workbench and the Access 2000 plug-in.
    I am using an ODBC driver, and the SQL conversion requirements for converting
    to a native driver seem too time and labor intensive to be feasable.
    My problem is that I have some "Memo" columns in my Access database containing
    over 200,000 rows that I need converted to Oracle. This is something I'm going
    to need to do over-and-over again for different Access databases.
    I gave up on mapping the Access "Memo" datatypes to Oracle "Clob" datatypes. It
    was either taking forever or taking WAY too long.
    Then I tried mapping the Access "Memo" datatypes to "Varchar2(4000)" and although
    it completed it took longer than my customer will like (think 1/2 an hour just for
    all the rows of one memo column in one table).
    Finally I tried going into the original Access database and converting the "Memo"
    column into a "Text" column. It wouldn't work, I kept getting the error:
    =====
    Microsoft Access can't change the data type.
    There isn't enough disk space or memory.
    =====
    even though I had over 10GB of free disk space and only 1/3 of my memory was being
    used. I assume this is a memory-max limitation in Access 2000.
    Any suggestions for speeding the conversion? Could I stagger using Migration workbench
    to create the tables. . .then use SQL*Loader to load the data. . .then use Migration
    workbench again to put in the idexes, etc? Would this be faster even if it worked?
    Thanks,
    Aaron Chawla

  • How to use access database

    is it possible to use access database in visual basic 2012

    Hello,
    There are two main methods for working with MS-Access databases in Visual Studio with VB.NET. One method you go through several steps which the IDE data wizard creates strong typed classes and assist with binding fields in the database table to controls
    such as a DataGridView, ListBox, TextBoxes etc. The second method you actually write all the code which can go in two different directions.
    Which one to pick is dependent on your expertise in general with VB.NET. Both have advantages and disadvantages.
    The following shows the beginnings of working with data wizards in the IDE while
    this page is an index for the link just provided with a mixture of examples.
    If open to suggestion and dependent on your needs please consider looking at using SQL-Server since there is an Express version of SQL-Server installed with Visual Studio. SQL-Server is overall and better choice but does not mean it's best for you at this
    time but worth considering.
    Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem. Contact via my webpage under my profile
    but do not reply to forum questions.

Maybe you are looking for

  • Passing from MS SQL Server to Oracle. Options?

    Hello, We are going to be passing from MS SQL Server to Oracle (ver 10.2.0.3 on Windows Server 2003). It looks like there is no Oracle tool which will translate TSQL code so that an Oracle database can read it. What can be used to pass SQL Server DML

  • File to IDoc scenario - IDoc received with Errors

    Hi, I tried to send send IDoc from a file to SAP R\3. The communication channels are working fine, and I get the IDocs in R\3 but with status 56. When I examine the received IDoc structure in transaction "WE19", I see that the receiver port(SAP + SID

  • Storing XML as CLOBs

    Can anyone give me some input on how to store XML files as CLOBs in an Oracle database, preferably using jdbc through jsp pages? null

  • Javascript Call from AS3 Playbar

    Platform: Captivate 7 Source: AS3 (hopefully obvious!) Output: Flash v10 I'm making a one-off version of one of the default playbars.  I am trying to make the Exit button call a JavaScript function using the following code: var btnTipsId = 8; functio

  • IMPORTING BW MODELS TO HANA STUDIO

    Hi, While importing BW models to HANA studio cube not visible only DSO and infoobject visible we tried to import DSO it is not activate