How to access shared hosting database with Java desktop application - java

I was looking for a solution for one of my questions. I have developed a Java desktop application. I have a database in a shared php hosting server. Is there any possible way to connect the shared hosting database with my Java desktop application. And how can I perform timed database synchronization with the shared database server
Thanks in advance
Mujahid

If the shared hosting provider allows SSH file transfers, check to see if you can create a tunnel to the database server, and configure your desktop application to use that tunnel to connect.

Probably not, for security reasons %99,99 of shared hosting servers would not allow that.
However you can programm a gateway php string that interacts with db on the server side. Then you can connect to this php script from your java app:
your java app <-> php script <-> db

Related

How can I allow other computers to access my programm's database?

I have a java application that I programmed, and I also created a Wampserver database to store the app's data. When I install the application in another computer, it basically can't do anything because wampserver isn't installed on that computer, and even if it was, the database wouldn't be imported on that same computer.
Can I install the database with the program itself, without making a database server in my computer? (For security reasons)
Sorry if this is a dumb question, im new to programming.
Assuming you are doing this in a Home/office environment. Where your IP Addresses do not change so often. Or you have the power to assign them statically.
You could try using a multi-threaded client server model. Where your wampserver computer(server) will accept a connection from another computer(client), and from there any queries to the database will be handled by that thread. This way, you could get away without installing wampserver on every client.
It would require some networking codes to be added to your java program. There are many examples on multi-threaded client server model -> Multithreading with client server program
You can open your MySQL server to the outside world or to certain IP (comment or edit bind value in your MySQL configuration file).
This can be a security issue. What is your objective? Usually, you'd do an API allowing access to your data from your application.
You are talking about "hosting" your database. You need to either:
Create, develop, and run a hosting service (not trivial), or
Pay to one the myriad of hosting services available, and install your database there (cheap these days). Just a couple of well known examples: Digital Ocean or Amazon Web Services.
In any case, it's a huge security risk to open your database to any client online.
Normally you write a program/application that accesses the database in the same [local] network, and that application serves web pages (or other web service) to the world.

Connecting different user to 1 server(database derby) in netbeans using java

I made an inventory system in netbeans using the language java and i connect it to derby as my database it is already working as a whole system but I want to have a client-server functionality what I mean is I want my program to have a server which holds the database(different computer) and different users with different computers which they can save/view data at the same time to the database means they are connected in one network.
Working with multiple connections to a single database.
What code can I use or method or do I have to import something?
I did some research and the only thing that I found is socket which can be used to create a chat between server and a client.
But I only tried the IP 127.0.0.1 for the client since I am making running the server and the client in the same computer.
And also can I open the connection of the server in the client form and send data like SQLQuery so I can save it in the database of the server?
Where can I see examples for these? Please help thanks
Yes, Derby supports a client-server configuration of your application.
Deploying your application in the client-server configuration is straightforward:
Deploy the Derby Network Server, for example by running the startNetworkServer script that is included with the Derby distribution.
Ensure that derbyclient.jar is in your application's CLASSPATH, and that you register "org.apache.derby.jdbc.ClientDriver" with the JDBC DriverManager.
Change your JDBC Connection URL from jdbc:derby:<db details> to jdbc:derby://<host:port>/<db details>.
If this is your first time using Derby, I strongly recommend working your way through the Derby tutorial at https://db.apache.org/derby/docs/10.12/getstart/index.html
For more information about running the Derby Network Server to service database requests for your applications, read the Derby Admin Guide: https://db.apache.org/derby/docs/10.12/adminguide/index.html
Use the IP 0.0.0.0 or for all connections in the server. The the connection url should include the name of the server or the ip address of the server in the network. When you use ip 127.0.0.1 or localhost derby can only accept connections to the database in the same machine, in this case localhost. All of this can be done by your network application server

Accessing local postgres database via internet

I have a pos software which is developed with java and it is running perfectly on localhost with a PostgreSQL database. But the problem is my client wants to use the pos software while he is travelling.
So my problem is how to access the PostgreSQL database which is running on localhost via internet. I searched this on google and found that I can use web services to connect to my PostgreSQL database via internet. But don't know how to access those web services via internet because I don't have an static IP address.
Can anyone please tell me:
What is the best way to access my localhost PostgreSQL database via internet?
If the best way is using web services how to access those services via internet if I don't have an static IP address?
I'm using java to develop my desktop POS software and it is running on a windows computer.
You would have the same trouble that accessing a box running PostgreSQL: you need to locate that box somehow; it will happens if you deploy your Web Services and it is happening now that you want to access your database. There are many ways to achieve that, but basically you need a permanent connection to the Internet (of course) and a static (real) IP.
I would recommend you to deploy your application in AWS, OpenShift, or Heroku, to name a few.

Connecting Access Databases remotely?

Currently I have a Java application which performs all I wanted and the limitation
in it is "It only resides on the Local machine for which it needs to work". I have the Access Databases located on a Remote Server and I install the Java app on the remote server to connect the databases using a connection string jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=D:\\DATA\\DPPI\\DATA\\DPPI\\DPPIPR01.mdb;
It connects to Access Databases and do all the business logic with them.
Enhancements (to be done):
Making the application online - not a big issue.
Connecting the databases remotely - its the only concern.
If I make the Application Online the Access Databases need to be connecting through network (somewhat like IP or some web address).
Problem:
But after going through this Connect to Access database remotely It seems my requirement can not be completed.
Is there any way if I'm able to upload the database to the online web hosting server and access the database from there only? If yes, then how should I do the connectivity since Access Database connects by giving the fully qualified name containing drive letter and all.
But how should I proceed further so that I may be able to connect the mdb Databases remotely?
ADO Solution:
But after going through the link: http://webcheatsheet.com/ASP/access_connection_strings.php, it seems we can perform remote Access Database connectivity.
The solution for the ADO is something like:
connectionString="Provider=MS Remote; Remote Server=http://your_remote_server_ip;" &_
"Remote Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\your_database_name.mdb"
I'm a tad confused to how Access Database we can connect.
There is one more question in my head.
I'm making use of Type-1 Driver. Should the Type-4 Driver support the remote connectivity?
If your application is a server side application (like a web application) and your server's OS is Windows then theoretically it is possible to use your Access database. In this scenario, the Access database is local to your application. In your connection string you can simply use the path to the Access database inside your server's file system.
But keep in mind, that Access is a desktop database not made to use it as a server database. This can lead to poor performance and maybe system crashes. And it is possible that there are some licencing issues for this use case.
So even it may be possible to use Access with a server application it is strongly recommended to use a real server database like MySQL, MS SQL Server, etc. Even an embedded database like Apache Derby or H2 would be a better fit.
If your application runs at client side like a fat client, then your only chance to use Access is to put it on a network filesystem, so it is visible from every client. But this works only inside a LAN. If you cannot put it on a network filesystem then you have to use a real server database.
Do not use Provider=MS Remote (RDS) for new development. Here is a quote from the MSDN article
Microsoft OLE DB Remoting Provider (ADO Service Provider)
Important
Beginning with Windows 8 and Windows Server 2012, RDS server components are no longer included in the Windows operating system (see Windows 8 and Windows Server 2012 Compatibility Cookbook for more detail). RDS client components will be removed in a future version of Windows. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Applications that use RDS should migrate to WCF Data Service.
As others have suggested, you should seriously consider using a different back-end database for this particular application.
What if I'm able to call another java application residing on the Server housing the Microsoft Access Databases? Can you please let me know if it can be the solution such that I will have the division of my application into two:
1. The Online java Application performing 2 things: Accepting the requests coming in and waiting for the response to come from another application running on the Server housing the Microsoft Access Databases.
2. The Java application installed on the Server housing the Microsoft Access Databases only responsible for connecting and returning the DTO (Data Transfer Objects) -or some kind of objects in Collections.
So, I would expect a serverside program to handle the communication with the DB and the client application would communicate with the server app.
Please let me know if I should proceed in this manner.
it can be done by marking the traffic and queueing the traffic from the server---to----remote site ---(QOS..quality of service ) .....the two sites will be connected through VPN methods to reduce the unnecessary hops that will improve the latency plus add the security , thus server and remote site will logically act as if they are on the same network (LAN)
regards ,
Ali Rehan

Communication between App server and DB server in Java EE

What protocol is used for communication between App server and DB server in Java EE if they are both hosted on different machines?
I mean if I use JDBC, then can I just specify IP of DB server in the config file(connection string)
and the connection will be established?
And if it does get established then what protocol is used to communicate across the two servers?
Is this protocol database dependent?
Or should I have web services on the DB server to communicate with the App server?
The protocol to communicate with the DB is database dependant. The JDBC driver takes care of communicating with the DB for you.
The URL of the database is also database dependant, and contains the information necessary for the driver to connect to the database server.
Using web services on the DB server is definitely a bad idea:
it would forbid the use of transactions in the Java EE application
you wouldn't be able to scroll to results without loading them all in memory
it would be horribly slow
the web service on the DB server would still communicate with the same native protocol with the database server.
Read the JDBC tutorial for more information.
Usually the connection is implemented in the JDBC driver. The driver allows to work with some specific DB server. There are propriaetary drivers (like for Oracle for example) or open-source ones.
What to specify usually depends on the DB you work with and how its configured.
You say "just IP", how about user/password, schema (if it exists), port, etc. This stuff is best to be found by Google I believe :)
Regarding the Protocol, usually its custom protocol implemented again in driver. From the point of view of application developer it should be ok as long as the driver implements the specific version of JDBC.
Regarding Web Services, I don't see why should you use them...
Hope, this helps

Categories

Resources