I have developed a .net 4.0 Windows forms application that is supposed to execute on the client side (all client desktops are windows based with .net 4 framework installed). On the other hand, the server is a Linux server that has a MYSQL database.
I need to know what I need to do in order for my winforms application (on client desktops) to gather/write data from/to the MYSQL database on the server.
Do I need to do some server side programming/scripting in order for the winforms to communicate with the server.
I am new to this, kindly excuse if something sounds 'stupid'.
I am not .net proficient, but most 2 or 3 tiered applications work the same:
In your application, you should have access to a DB driver - like ODBC - which handles the connection with the DB server, sends it all the queries, and receives the results. All you have to do is specify the connection parameters:
DB server address
DB server port
DB user name
DB user password
On the server side, you need to configure the server to accept incoming connections from the client:
setup the DB service: install the DB server and configure it
configure user and database: create the schema, create the user account, populate the tables
setup the network: create the firewall rules to let the DB port open to your client connections
And that should be it. Since you will probably have to download the MySQL odbc connector, I suggest that you also consult its documentation, which provides tutorials and walk-throughs.
Related
error message from microsoft sql server management studioI set up a free phpmyadmin mysql database (online) and would like to use it for testing purposes on my windows forms application. I've been trying to connect to it from Microsoft server management studio and from visual studio but it always gives me the following error:
title: Connect to Server
Cannot connect to xxx.xx.xxx.xx(purposely ex'd out)
ADDITIONAL INFORMATION:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 53)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=53&LinkId=20476
The network path was not found
BUTTONS:
OK
------------------------------[connection error message][1]
If anyone can give me detailed steps on how to resolve this, I'll really appreciate.
welcome to Stack Overflow.
phpMyAdmin is a graphical interface for administrators to manage a MySQL or MariaDB installation. It's not an API that your Windows Forms application can access. You'll have to connect directly to the database (over the standard port 3306) or use some sort of API that's hosted alongside the database.
Most hosting providers block incoming connections on 3306, certainly I would expect a free MySQL hosting provider to do that as well. You'll have to ask the hosting provider if you're able to connect from your local machine to the database machine; you may need to add your IP address to a list of allowed hosts, for instance. Often, it's a bad idea to expose your MySQL installation directly to the internet (for security and performance reasons).
Your error message mentions named pipes. Named pipes are a Windows method for inter-process communication that is usually meant to be accessed from the same local machine (I believe Windows technically allows using a named pipe through a local network connection, but you're certainly not on the same local network segment and your chances of the free hosting provider allowing you a way to access a named pipe from across the network are less than them opening up MySQL's port 3306). Somehow you'll have to adjust your connection string to connect via IP address or host name instead of named pipe.
And finally, your error message refers to SQL Server. Microsoft SQL Server is a very different database product from MySQL/MariaDB. If your code is expecting to connect to SQL Server, you won't be able to use a MySQL or MariaDB backend instead. The two products are different enough and even use different ports, so the code won't be able to connect.
The idea to access multiple remote mysql databases some 30 in numbers using remote jdbc connection in my java application has been ruled out by the DBA's. No remote connection is permitted to the respective mysql DB. Connection can only be allowed from the local j2ee app servers within the LAN.
Alternatives suggested are :
1) Using a Middle ware Messaging layer which invoke some java at the remote side to provide the database results.
2) Using a Web Service on the remote MySQL database site as these site have J2EE App Servers to return the database query results. However i understand that the JDBC resultset cannot be serialized in a web service call and needs to be handled separately.
As the requirement is that the web service call will be using and SQL Query and the Result is to be returned to the Client. How efficiently this can be achieved.
Thinking of what other options are available.
Regards
Pramod.
I am designing the backend of my ios application. The backend has separate database and application server running mysql and django separately in different machines. Till now, I have connected my application server with my database server in simple way: I changed the database host in application server settings to point to remore database server and created a new remote host in database server configuration files allowing remote application server to access the database. All works fine and I have decided to go with this setup for production. Then when I was reading Instagram engineering blog, I saw them mentioning 'Pgbouncer' to pool connection to their postgresql database server. What is the need for something like this? Has this got something to do with only performance, or is this a production friendly approach to use something like this for communication between database and application server. Is my general approach mentioned too amateur?
Your approach is not amateur at all. The purpose of bouncer in your case would be to eliminate connection time that happens on each request django handles. For example, on Heroku, which is hosted on AWS servers, this could eat up 40-50ms of each request.
Now, if you had a master/slave setup or something like that, a connection pool would also provide you a failover functionality (just an example)
I Just Completed My Window Application,In Which I Use SQL Server 2008 as Back-End.
I Install My App With Database In Client Machine.
But Problem Is That My Client Can Also See My Database Using Sql Server Mangement Studio.
I Want to Prevent Client To See Database.
How can i do this?
That's the entire purpose of a database server. For any authenticated client to be able to connect to the server. That client may be your application or any other application - Management Studio being one of them.
You can either host your database server anywhere else and set up SQL server to only accept connections from your web application's server. But anyone that knows the IP, instance, and has the proper credentials can connect anyway from that server.
Or you can set up a user on SQL server for your application and configure your application to use that user. Now only the database administrator and that user can access that database.
But anyone that browses your application's configuration files will be able to pull the credentials anyway from there. Unless you are using integrated security, in which case the user your application runs under will be the only one to have access - assuming you grant that Windows user access to the database of course.
I guess the real question is, why are you trying to prevent someone from directly accessing the database?
I have a database in my localhost(Use WAMP server).I have created a WiFi network among several laptops.There is a C# application on client laptop which need to use the database in server(This application uses the data in the database).How do I do this?
(The client laptop can connect to my wamp server through browser successfully with address
192.168.16.2).
You need to do three things
Ensure that the application has the correct details to make the connection i.e username, password, database and hostname
Ensure that the server is using TCP/IP protocol (perhaps SSL) and that the firewall will not prevent incomming connections.
Ensure that the database user can connect from the remote machine. This can be achieved using the Workbench application.