I have a java desktop application connected to a derby database
the derby database has some dummy data for trial purposes.
The application is packaged together with the database(as embedded derby database).
When the application is installed on the desktop of my Windows 7 OS , I am able to
access the dummy data as expected. However, when the application is installed in the program file folder, I am not able to access the database as well as the data in the database.
Is there any explanation for this?
The "Program Files" folder is not writeable for a standard user (and for a good reason). Do not store any userdata there.
You need to put the database files into a different folder. This is what e.g. %APPDATA% is intended to be in Windows.
You can obtain the value of the %APPDATA% environment variable using the System.getenv() method.
From within Java you can also put it into a sub-directory the user.home directory using System.getProperty("user.home")
Related
I saw answer mentioned by Gord in
Unable to connect to a database on a shared drive - UCanAccess.
I am able to access my db from Windows to Windows Server where my Access Database file resides.
But when I deploy the same code on Unix, I am not able to access my database. I am using the same URL as proposed by Gord.
My URL is:
datasource.crr.url=jdbc:ucanaccess://////abc.dch.com\\der\\Share\\SongUnflaggedTest\\Songs\ Unflagged.accdb;Skipindexes=true;memory=true.
Unlike Windows, most Linux/Unix environments are unable to directly access a file in a shared folder by simply using its UNC path, e.g.,
\\server\share\folder\file.ext
Instead, we normally have to tell the Linux/Unix box to mount the share at a point on the local filesystem (sort of like assigning a drive letter in Windows), and then use that as the starting point.
For example, if we mount the share
\\server\share
to a mount point on the local filesystem named
/mnt/servershare
then we can access the file using the path
/mnt/servershare/folder/file.ext
See this Ask Ubuntu question for an example.
I have recently put all my java EE projects into my google drive so i can access them on my laptop and desktop computer. Some of my projects have a database component which I have the database stored in a MySQL server. Is there a way that I can export this database and just access it from like a database file which I can store in my project file so I can use it on both my laptop and desktop computer?
This is really what I would like:
-Be able to work on my java EE projects that have a database on both my computers
-Store my MySQL Server databases in a file which can go in my project folder then use java to access that database instead of going through the server
Any alternate ways of doing this would help me out this is just one way I can think of doing.
Note: I am using my laptop on the go so my desktop computer wont always be accessible from my laptop neither will I have an active internet connection always.
Thanks
Install MySQL on your laptop, then transfer database using backup/restore, e.g. using mysqldump. See https://dev.mysql.com/doc/refman/5.0/en/backup-and-recovery.html
I am working on an application that generates excel reports from a report generated by Mainframe.
Input report location and ouput location for generated reports are on company common drive that is mapped on my local windows box.
Things were wokring fine from my eclipse since my account have access to those locations on common drive. I am using JAVA File io to access common drive.
But when I deployed on webpshere, it wasn't able to access common drive and I think it could be websphere is using different account to access common drive and that account doesn't have permissions.
My question is how to force Java File io to use particular account.
And also when I deploy application on linux websphere, will this work assuming, common drive will also be mapped on linux boxes.
The proper account must be specified at the time of mounting the network location. (This can be done in both Windows (net use command) and Linux (mount command).)
Then, access mounted network location from your Java application.
I developed an application with a java db database .I cannot access the database records when I close the netbeans IDE with the message "Error connecting to server Localhost on port..." My connection code to the Database is :
String host="jdbc:derby://localhost:1527/Employee;create=true";
String user="admin";
String pass="admin";
con=DriverManager.getConnection(host,user,pass);
How do I fix the problem?
Netbeans automatically starts the Derby server; you can see that in the "Services" tab (Ctrl-5).
You'll have to start the database server by hand if you don't use Netbeans; see the doc.
Presumably your Derby database is hosted in NetBeans? You'll need to create a standalone database.
You would have to probably start your database before connecting (you are using server mode). Have a look into Vogella tutorial on Derby db connection from java application: http://www.vogella.de/articles/ApacheDerby/article.html
I guess NetBeans has an embedded DB instance.
Try to use
jdbc:derby:/MyFolder/MyDatabase/Employee;create=true
or
jdbc:derby:C:\MyFolder\MyDatabase\Employee;create=true
if you do not need to access the DB from multiple applications.
You can use JavaDB (aka Derby) either by connecting to a JavaDB Network Server or by using it as an embedded DB when your application opens the DB files itself.
Currently, your application is connecting to a Network Server started by NetBeans, as your URL is telling to connect to port 1527 on localhost, i.e. your system.
What you need to do is tell your application to use JavaDB as an embedded database, i.e. it should manage the database itself instead of getting Netbeans to do it instead. You can do this just be changing the URL to something like:
jdbc:derby:Employee;create=true
You may need to tweak that URL depending on where the database files are stored relative to your application's working directory.
Only one application can have the DB open at one time. So when you're doing this NetBeans won't be able to open the database, and if NetBeans has the database open your application won't be able to open it. So you may find you want to reconfigure NetBeans as a DB client.
the simplest way of dealing with these problems is creating batch files..
first of all build your java database program.. the tricky part is to start the server. the jderby is a server so it needs to be started.. that's why you start the server in netbeans. so download db derby files from "http://db.apache.org/derby/releases/release-10.8.2.2.html". after you download these files, copy your netbeans project in those db jderby files.. go and copy your database folders from where they will be saved.. and paste them in the db jderby files.. now open notepad and type
#echo
start (PATH)
start (PATH)
the first path take the path of the file named start network server.bat
the second path take the path of the jar file of your main project.
Now save your the notepad as setup.bat and run the batch file afterward.. and ur program will start the server and running your application at once...
NB: you can use a different name from setup, any of your choice but the extension bat must be available
This is the first time I am going to deploy the Java Desktop Application with MS Access DB and discovered JAR package is not getting database access other then my development PC though I had the MS access DB in the same directory of the JAR file I have copied after Build the application. And I understand that I cannot connect MS access DB I created with ODBC connection of my PC. Now my question is
How can I deploy Java Desktop Application with MS access BD which will run in any computer where manual ODBC connection to the MS ACCESS DB for every computer will not require ?
I am not trying to connect MS access DB within a net work rather I am trying run this app where MS Access DB is already installed and my supplied DB will be with the JAR file and I want to access the DB I have provided from Java Front End Application.
Please help.
First you should get ODBC driver for Access database. Some computers may don't have it.
After you install that driver you should create ODBC Data Source on computer. I have no idea how to do it in Java, but ODBC Data Source configurations are stored in registry and you can add your Data Source.
Google "registry add odbc data source" or "Can I Create and Delete a DSN Using a Script" (second one is title of good article i found.
Probably you can access registry from java without any problems.
You can also use one of install-maker programs. Some of them have something like "Add Data Source" functionality.