Access database creation
I have a seemingly simply problem. I need to create an MS-Access MDB file on a *nix server and populate a single table with 300K or so records in an automated report, generated from a JSP / servlet. I cannot seem to locate a resource that can do this without draging a windows server into the mix. Does such a product exist? Is this the proper forum for posting such a question? Any pointers are appreciated.
THe customers are a collection of PHB's (Pointy Haired Boss) types that only have access and need to be able to munge the summary data I'm sending down into their reports. ACcess is a requirement from their side.
I'm currently working a solution that will include tables in a DBF file with a small access 'stub' that links to the tables in the mdb. If I can get the managers to accept the change, it should work just fine. ELse they will be paying for another Microsoft server just to generate this report.
Similar Messages
-
How to automate creation of MS Access databases/tables/records
Can someone point me to some examples that automate the creation of MSAccess database files and tables?
Can I do this with a bat file? If not, a ps1 file?
I bing searched and could not find an example.
I want to test the existence of a mdb (or accdb) file and if it does not exist, create it.
Then I want to see if that mdb (or accdb) file contains a table named "parts".
If it does not contain that table named "parts", create the table.
If that table does not contain any records, than add some sample data, presumably with some SQL "INSERT" statements.
What is the preferred API for this? I was thinking we should use the ADO.NET/OleDB API. I did find a few examples of queries of MSAccess databases with the old ADO API.
ADOX seems very old for creating databases. Is there any thing more modern?
Is powershell the easiest scripting language to do this?
Thanks
Siegfried
siegfried heintzeThis blog post should have most (if not all) of what you need:
http://blogs.technet.com/b/heyscriptingguy/archive/2009/02/16/how-can-i-use-windows-powershell-to-create-an-office-access-database.aspx
One thing to watch out for is the db provider for the connection string. The "Jet Engine" has been superseded by
ACE. -
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.
% -
I can't access Database 11g EE in the browser
Hi Rajiv,
Thanks for your contribution to find solution to my problem.
In the first place I wanted to direct my problem to the forum that deals with Database 11g Enterprise Edition but I can't find it. Please if I am in a wrong place kindly direct me.
Really I can't specify where the problem actually is. Probably if I give the installation procedure I went through and specified Error messages, one may be able to help me.
Installation Option: - Create and configure database was selected
System Class: -Sever Class was selected
Install Product:-
Oracle Database Installation= Succeeded
· Prepare= Succeeded
· Copy files= Succeeded
· Setup files= Succeeded
Oracle database configuration= Succeeded
· Oracle Net Configuration Assistant=Succeeded
· Oracle database configuration Assistant=Ignored
· Oracle configuration Manager Configuration (optional)=Succeeded
In the process of the Install Product the following Error messages displayed:
1. File not found C:\app\godis\product\11.2.0\dbhome_1\oc4j\j2ee\oc4j_applications\applications\em.ear
2. File not found C:\app\godis\product\11.2.0\dbhome_1\oc4j\j2ee\oc4j_applications\applications\em\em.war
3. File not found C:\app\godis\product\11.2.0\dbhome_1\ctx\admin\dr0ulib.sql.sbs
4. File not found C:\app\godis\product\11.2.0\dbhome_1\bin\db2gc
5. File not found C:\app\godis\product\11.2.0\dbhome_1\oc4j\oc4j_DBConsole\config\system-applications.xml
6. File not found C:\app\godis\product\11.2.0\dbhome_1\oc4j\oc4j_DBConsole\config\system-jazn-data.xml
7. File not found C:\app\godis\product\11.2.0\dbhome_1\oc4j\j2ee\oc4j_applications\applications\em.ear
8. Template General_Purpose.dbc does not exist. Please specify an existing template for database creation> OK was selected
9.[INS-20802] Oracle Database Configuration Assistant failed> skip was selected>Finish.
I opened firefox browser and typed https://godis:1158/em (‘godis ‘as name of the laptop hosting the installation) but the following error message displayed in the browser:
Unable to connect
Firefox can't establish a connection to the server at godis:1158.
The site could be temporarily unavailable or too busy. Try again in a few moments.
If you are unable to load any pages, check your computer's network connection.
If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the Web.
I clicked Start>All Programs>Oracle-db11g_home1>Configuration and Migration Tools>Database Configuration Assistant and followed screen instructions to configure orcl database but at the end of the configuration the following error displayed:-
Enterprise Manager Configuration failed due to the following error:-
Error instantiating OC4J Configuration files. Refer to the log file at C:\app\godis\cfgtoollogs\dbca\orcl\emConfig.log for more details. You can retry configuring this database with Enterprise Manager later by manually running C:\app\godis\product\11.2.0\dbhome_1\bin\emca Script
When I ran the emca.bat file it splashed without achieving any positive result
I checked C:\app\godis\product\11.2.0\dbhome_1\install\portlist configuration settings file but there is no port number enlisted in the file. It is totally empty
I reinstalled and changed the System Class from Server Class to Desktop Class but the same experience
I will appreciate if some can help me solve the problem since this is my first attempt on Enterprise Edition. I need the help of an expert
Regard
Godis-Tei>.[INS-20802] Oracle Database Configuration Assistant failed> skip was selected>Finish.
I doubt that any database actually exists now.
Are both Operating System Services for database & listener running now?
what clues exist within alert_SID.log file?
How do I ask a question on the forums?
https://forums.oracle.com/message/9362002#9362002 -
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 -
About database creation in Peoplesoft.
Hello..
I am trying to create database by using scripts provided by peoplesoft HRMS9.
FYI, I have successfully install tuxedo 9.1, webserver 9.2, PeopleTools8.49 and HRMS 9. I use Oracle 11gR1 on Oracle Enterprise Linux 5.3
Well, I read on Appendix B in the Enterprise PeopleTools 8.49 Installation for Oracle and some websites.
I have modified createdb10.sql, utlspace.sql. I ran those scripts and database created.
Well, when I ran dbowner.sql I got some error. I run as oracle owner and log as sysdba.
SQL> CONNECT PS/PS;
Error accessing PRODUCT_USER_PROFILE
Warning: Product user profile information not loaded!
You may need to run PUPBLD.SQL as SYSTEM
Connected.
so I ran PUPBLD.SQL first. And then I run dbowner.sql. But the error still occured. I read from this http://psst0101.wordpress.com/2009/01/21/step-by-step-virtual-ps-install-database-creation/
Any suggestion please, because I read in http://gasparotto.blogspot.com/ he did not run pupbld.sql but succeeded.
Any one have same experience..??Lastly, you could try to run this script (PUPBLD.SQL) as SYSTEM, not as SYS.thank you, It's work by connect system/manager and run pupbld.sql.
well, I run select default_tablespace from dba_users where username='PS' I get SYSTEM.
I think these column is important information.. :
username PS
temporary_tablespace TEMP
default_tablespace SYSTEM
status OPEN
user_id 28
password ( blank )
profile DEFAULT
so, how about that?
regard.
Nia... -
Database Creation Error in 9.2.0.1.0
Installed 9i on a Win2K Pro machine. Software installation was successful (as far as I can tell). Able to connect to external Oracle DB's without problem.
However, when creating a local Oracle DB on my machine, I get TNS:packet writer failure errors during the initilization. This seems to happen during every install of a DB I try. The exception is if I log into the machine under the machine's administrator account, vice my domain account. Even though both accounts have the same access to the machine, the database creation will only complete under the machines' administrator account. Then if I do get the DB installed under the administrator. I can't connect to it when logged into the domain becuase I get end-of-file errors. Other user can successfully connect to the DB from separate boxes, but I can't connect locally. Nothing I have found so far can explain why this is happening. What else should I look at as possibly causing this problem. Or are their issues with installing the Oracle 9.2.0.1.0 DB on a domain.Installed 9i on a Win2K Pro machine. Software installation was successful (as far as I can tell). Able to connect to external Oracle DB's without problem.
However, when creating a local Oracle DB on my machine, I get TNS:packet writer failure errors during the initilization. This seems to happen during every install of a DB I try. The exception is if I log into the machine under the machine's administrator account, vice my domain account. Even though both accounts have the same access to the machine, the database creation will only complete under the machines' administrator account. Then if I do get the DB installed under the administrator. I can't connect to it when logged into the domain becuase I get end-of-file errors. Other user can successfully connect to the DB from separate boxes, but I can't connect locally. Nothing I have found so far can explain why this is happening. What else should I look at as possibly causing this problem. Or are their issues with installing the Oracle 9.2.0.1.0 DB on a domain. -
Migrating Access Database to Web WITH FORMS (not just backend)
How difficult would this be, what steps would be involved and is Dreamweaver capable of helping?
The server uses IIS and ASP so compatibility should be fine with access.
I have enough of a programming history to replace vbasic code with ASP code if I read about the language, but would like to do the least amount of work required.Lets just say that Access and Oracle are completly different animals and leave it at that. What I believe you need to do is:
1. Create an Oracle Database using the Database Creation Assistant. (Keep all the Defaults, and keep track of any passwords that are used.
2. Using the System (DBA) account, crate a user to hold the Access Schema (Never create objects in the SYS account and you shouldn't do that with the SYSTEM account either.
3. Run the Access Migration Workbench. -
Hi All,
I am new to database creation. We have a project starting early next month.
The application acts like an interface to more than one user. One user will have access to his/her authorized set of data.
So, he/she cannot/should not access other users data. Same is the scenario with all the other users.
We are hoping that, we will have large amount of data specific to every user. We have identified some ways to do this:
1. Create seperate schemas to each and every user.
2. Create a single schema and have a master table which will have all the user details. Based on this, the data will be created in the tables.
3. Have a single schema and create partitions/sub partitions in the tables for each and every user.
We have identified the above with minimun exposure to database creation/maintenance. So, we are not sure which would be the perfect way
Can you please suggest the best thing to follow here.
Thanks in advance.If the data structure is exactly the same for all these users and the number of users is high, a better way is to implement Virtual Private Database. With VPD, you will have one transaction data but each user will have access to its own rows only.
http://www.oracle.com/technetwork/database/security/index-088277.html
It is more expandable than the solutions you provided and is very seamless after the initial setup. -
Connect to a remote MS Access database using RmiJdbc
Hello,
I want to access a remote MS Access database from oracle stored procedures.
Does anyone know how i can load the RmiJdbc driver using the loadjava command or with any other way.
Because when i try to load RmiJdbc.zip using the loadjava command I am getting the error:
ORA-29533:attempt to overwrite class or resource string while defining or compiling scott.TestClient
this error is occured for multiple files...
I don't know how to delete this classes.
Because this error occured and the first time i tried to load Rmijdbc driver.
and when i use the dropjava command to drop it,and then load it again the same error occures.
Can anyone help me how to load this driver?
Please answer because i need it as soon as possible.
ThanksHi,
try this.
String s = "UPDATE AGENT SET afname='test',alname='u',city='d',AGENT.[percent]=1 WHERE aid=23";
-------->AGENT.[percent] -
How to Protect your Custom Access Database Product - so that you can sell & distribute it?
I'm looking for an update on this topic as I have been away from Access for a couple of years and have not kept up with the latest.
Hopefully they have made it easier to design, develop, sell and distribute custom database solutions. So here goes...
Question A:
If one develops a custom database product with Access 2013 what is the current best way to...
1 - Prevent it from being (too easily) copied
2 - Prevent it from being (too easily) reverse engineered
3 - Prividing a time limited free demo copy?
4 - Providing a demo copy with limited functionality... like limiting the number of records in an important table, or whatever?
5 - What have I left out of this list that should be considered for protecting ones investment in the development of the product? (other than copyright, of course.)
Question B:
What is the latest on being able to migrate an Access database to the cloud?
1 - Entirely online
2 - Part in the cloud and part on the users machine
3 - And what about all that VBA code - is there no way to make that work in the cloud and/or on a web server... or does it all have to be tossed and all the coding redone?
Question C:
What are other alternatives solutions for selling your custom database application while protecting all your investment in developing it?
1 - Write the front end in C++ (so that it is fully compiled) and the back end in ASP with MS SQL Server? (or alternative server side solutions)
2 - Write the whole thing as a server side solution with browser interface?
3 - Or what?
Thanks for any help.Hi Fran_3,
>>What is the latest on being able to migrate an Access database to the cloud?
In my option, the Access Web app would be a better choise.
Regards,
Tony
Help each other -
"Connection is closed" closed error while using MS Access database
We are using MS Access database in our project. Recently the database was upgraded to 2000.
After upgrading the database, I get the folowing error when getAutoCommit() is called on a connection -
java.sql.SQLException: Connection is closed
at sun.jdbc.odbc.JdbcOdbcConnection.validateConnection(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.getAutoCommit(Unknown Source)
The connection is not closed explicity before getAutoCommit() is called, only the statement is closed.
This error is sporadic and occurs under load scenario only (when a lot of connections are open). Once the error occurs, all the database calls fail then onwards. The error was not occuring before the database was upgraded.
I suspect the jbdc-odbc driver. The driver might not be compatible with Access2000 database. Under load scenario, it might be closing connections automatically.
Has anybody faced similar problem before? Where can I find the compatible jdbc-odbc driver? And how to ensure that it is jdbc-odbc driver problem only?
The database verison - MS Access 2000
Java version - 1.3.1_01can i just point out that there is no support for transactions in Access so I wonder why you are calling autoCommit methods at all...
-
Access of ms access database and displaying it on applets
I had made the connection thru JDBC and was able to access data from MS Access database when i had written java application program. But when i created one applet and created instance of that class which was making connection to the database thru JDBC and called one method which was returning one value from the database , i was not able to get on the applet(in the text field) . It gave me some security exception saying acces is not allowed.
Please give me the reason for this and send me reply back on this email id
[email protected]Welcome to the club. There is an on-going discussion from which I too would like to learn this. Try http://forum.java.sun.com/thread.jsp?forum=31&thread=174953.
Best Wishes. -
Database creation problem on Windows XP
Hello Readers
I have installed ORACLE Database Engine on windows XP.
I am facing problem in database creation.
I have tryed wizard as well as mannual method.
in wizard at 90% it gives an error "END-OF-FILE ON COMMUNICATION CHANNEL"
although CD drive is in CR Rom drive.
Please help me ....
Rashid Masood Ashraf
email: [email protected]After going to the properties as you suggested:
Right now the Obtain an IP address automatically is checked
I need to check the Use the following IP address:
What should I enter for
IP address:
Subnet mask:
Default gateway:
Please help.
Edited by: Nel Marcus on Dec 2, 2008 3:49 PM -
Not getting the records from Access database
Hi All,
Iam creating a universe based on Access database. I am able to view the data from all the tables except one table. When i try to view the data there is one error message "Syntax error in from clause, State: 37000". Everything is ok at database side. What does this error means?
Please help me on this.
Thanks.Hi BOCP,
Thanks for your reply. I have resolved my issue. Actually my issue was, I have a table "Date" in universe which was created in Access database, when i tried to view the Date Table values in Universe i was getting that Syntax error in From clause message. I came to know that Date is a keyword or predefined table in WebI & it wont accept that word as a user defined Table. So i renamed that table in Access and Universe. Now my issue was solved.
Thanks,
Swati.
Maybe you are looking for
-
Hi Experts, Can you please help me in telling the new line character in Data Services, so that I can use that in script. I tried using \n for new line, but of no use. Regards, vivek
-
Problem in serialization of an element
Hi, I'm facing a problem in sending out message for document style webservice. I have tried to explain the sceanario below as much as possible. I'm writing Bpel process to invoke a wsdl . The input variable to the operation has 2 parts - header and b
-
Its important that all characters display correctly in my pdf.
When I convert a file to pdf, I always get this error: Cannot extract the embedded font'HWNDJR 83mkhgdligynvro' some characters may not display correctly. What is wrong? Its important that all characters display correctly in my pdf ebook. Please advi
-
The TV-out option of my N96 produces a black and white feature on the TV. It shows beautifully on my mobile handset but on the TV screen, its in black and white. Thanks! Solved! Go to Solution.
-
Hi, I have problem regarding how to create a list of IP addresses given starting and ending IP address. E.g. IF I have starting IP address as 172.20.59.58 and ending IP address as 172.22.56.44, I want to find all the possible IP addresses within this