I would like to connect with React Native to an external database, like PostgreSQL, MySQL or what ever. Is this possible?
But first let me tell you something about my plan:
I will develop my application for multiple installations (multiple devices - one installation on one device). All devices are connected with a local network which is provided by a Windows installation (server). On the server runs a database (PostgreSQL) and I would like to connect to this database with all my devices.
The server (or in fact its database) should store tasks and each device should access to these tasks (read and write) locally.
I had also some other ideas like simple SMB-XML file storage (but the problem with collisions) and an SQLite database on an SMB shared file - but the website of SQLite tells that this will not avoid problems with multiple accesses. Therefore I need another local solution. This brought me to provide a database which is accessible from the local network.
I would be very grateful if someone has a note how to solve this problem.
Thank you!
In order to access a database directly from react native you would need a pure JavaScript database driver. A quick google search produced a JavaScript drivers for PostgreSQL (https://github.com/brianc/node-postgres) but it is written for Node.js and I doubt it will work in JavaScript Core or Chrome. CouchDB works via a REST API and it's actually intended for direct access by multiple clients. There are multiple JavaScript clients available for that.
BUT why do you want your clients to connect to the DB directly? What you describe seems like a pretty standard application model. You'll just need a backend running on your server talking to the DB and providing an API. Good old web development. If you want to write JavaScript on the backend I suggest using Node.js
If you really can't or don't want to write a backend, there are several services that provide API for data storage and even some data processing. But of course they aren't local. Have a look at parse.com or firebase.com for example.
Related
I have tried various ways to connect to different DB engines (asynchronously), but they all failed when I deployed the code and executed it via my browser in WASM format. The code worked well for UWP tho, so I'm a bit baffled.
Although there's a sample for SQLLite in browser, it wasn't too helpful for me. Hopefully someone could give me a few pointers to continue. Thanks in advance
The support for SQLite is about running the database inside of the browser itself, but not about running it from a remote database.
If you need to have such a support, you will need to have a .NET SQL provider that supports plain HTTP/S or WebSockets, which is available for cloud-based databases.
In general though, you may want to consider a WebAssembly app as a mobile app for which it is best to access remote resources like databases through a Web API.
Note that the Chrome developers have in mind the creation of a RAW sockets API, which would enable TCP non-HTTP connections to be created.
I'm coding an inventory management system using html,css,js and electron to compile it into a desktop based app.
I want it to work locally on clients computer, without internet connection.
Please share your experience with local database management system, keeping in view electron and inventory management system requirements.
Thanks.
If you are doing an electron app and you want to use without internet connection I would suggest sqlite. It is simple and it works very well with javascript.
Check this out Uses for SQLite (Internal or temporary databases)
I want to create a standalone todo list with HTML5. Ideally, it would be a file that sits on a USB drive and could leverage a database (either embedded in the html file somewhat like tiddlywiki) or would access another file.
I've read about Web SQL and SQL Lite, but it seems like they save the database information to a specific location on the local computer, and the user has no control over whether to place it elsewhere. The app wouldn't really be portable if it saves a different instance for every machine upon which it's run.
Is there a solution to force the database to reside on the portable drive?
Client & Server Storage
SQLite
SQLite is a database engine that needs to be specifically installed on a machine or packaged with software. This type of technology is usually used on the server side with a server programming language like PHP. Therefore, I do not believe that server storage solution is for you.
HTML5 Client Storage
Meanwhile, Web SQL is an HTML5 feature for client storage. The databases are managed by the client (the browser) through JavaScript. The implementation of WebSQL is very similar to SQLite. Note that Firefox supports IndexedDB instead of WebSQL. Sadly, you can't force the browser to store the databases onto an external drive.
The Solution
At this point, the most viable solution for you is to create an application that will be executed on the external drive. If you really want to use HTML5 you could go with Titanium. It leverages the power of web technologies to create native cross-platform applications. From Titanium's documentation you can package a SQLite database with your application.
I've heard much good about nodejs and writting client-server application with it. But I can't get, for example, when developing IM client-server application, how nodejs server script is supposed to talk to database server to actually store it's data? Or may be I miss something and nodejs server scripts are not supposed to do that? If so, please, push me to correct direction.
I've noticed DBSLayer http://code.nytimes.com/projects/dbslayer/wiki, but it looks like it's still in beta.
You need to grab a module that handles the communication to the database you want. See here for a list of modules for node.js. Popular databases that work well with node.js are MongoDB, CouchDB and Redis.
As stagas says, you can use a module that handles communication if you want to use an external database.
If you want an internal (=embedded) database, you can use one written in javascript you can require like any other module such as NeDB or nStore. They are easier to use and useful if your webapp doesn't need to handle a lot of concurrent connections (e.g. a tool you make for yourself or a small team), or if you write a desktop app using Node Webkit
I've got a website that runs on a shared hosting environment, using ASP.net 2.0 (C#) and MS SQL Server 2005. I've recently been asked if I can integrate my website with a piece of third party desktop software that uses the Access runtime as its database (transparent to the end user).
Primarily I want to be able to offer users of my website the option of exporting their data into the Access database on their local machine. The data schema's match sufficiently, the question is how to actually do this, and in the simplest way possible for the user.
Simply having a webpage update the local Access database isn't possible due to the obvious security restrictions. I've considered asking them to upload the Access database to the server, so I can migrate the data then allow them to download it again, however the competency of the users of this software is such that even locating the Access database, let alone uploading and downloading it from the website might be too complicated.
I've also considered if Adobe Air or Silverlight could help here, but don't know them well enough to know for sure. Similarly I'm assuming another exe could be written to perform this task that the user could simply download and run, however my experience is in web development, not program development, so this isn't a 100% certainty for me, or an ideal development option for me.
So, can this be done, and if so what technique can achieve this, with the stated aims being ease of use for the end user, followed by ease of development by someone with web development as their main skill. Many thanks!
You may find this answer of interest: Best way to stream files in ASP.NET
It is about transferring a file from the server. You could save Excel or CSV and use that to update Access.
Instead of trying to do this in a web page you might just expose some views from your sql server to some client specific logins.
Then within the Access application, allow them to tie to your sql server. You might even provide an access application for getting the data from your site and stuffing it in their local access database.
In my work we have done something similar that is transparent to the user by creating an ActiveX control. The problem is that you are limiting the users to use only Internet Explorer.
I think that the best way to achieve what you are trying to do is by installing a service in the client's computer. If creating a service is beyond your experience you can post a project in a place like oDesk and find somebody that can help you with the development for the money that you are willing to pay to complete your project.
Good Luck.