Jump to content

  • Log In with Google      Sign In   
  • Create Account


Cross Platform C++ Database library?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
12 replies to this topic

#1 noatom   Members   -  Reputation: 782

Like
0Likes
Like

Posted 27 June 2014 - 02:13 PM

I basically need a free c++ library for doing MySQL operations. It needs to work on Windows, Android, IOS, Mac. Does anyone have some suggestions? 



Sponsor:

#2 Promit   Moderators   -  Reputation: 6610

Like
3Likes
Like

Posted 27 June 2014 - 02:23 PM

The library IS MySQL, specifically the MySQL client library. It's a C API. 

http://dev.mysql.com/doc/refman/5.0/en/c-api-building-clients.html

http://dev.mysql.com/doc/refman/5.0/en/c-api-function-overview.html


Edited by Promit, 27 June 2014 - 02:23 PM.


#3 noatom   Members   -  Reputation: 782

Like
0Likes
Like

Posted 27 June 2014 - 02:30 PM

But I see it uses boost, which has dlls, so wouldn't that be a problem for cross platform?



#4 SeanMiddleditch   Members   -  Reputation: 5078

Like
0Likes
Like

Posted 27 June 2014 - 02:30 PM

If you don't literally need MySQL, you might also consider SQLite. Android/iOS implies to me that you might be needing some kind of offline mode and not connecting to an actual server, so an embedded DB like SQLite could make more sense than trying to use embedded MySQL.

#5 SeanMiddleditch   Members   -  Reputation: 5078

Like
0Likes
Like

Posted 27 June 2014 - 02:33 PM

But I see it uses boost, which has dlls, so wouldn't that be a problem for cross platform?


Boost can be statically linked and compiles on a wide range of platforms.

#6 noatom   Members   -  Reputation: 782

Like
0Likes
Like

Posted 27 June 2014 - 02:45 PM

^

| oh well, I admit I didn't think of that. Also, no, I don't need it for offline use, I basically need to store ids and passwords for a multiplayer game. I guess I'll go with the mysql client library and link everything statically, including boost. Hope it works.



#7 Promit   Moderators   -  Reputation: 6610

Like
0Likes
Like

Posted 27 June 2014 - 03:34 PM

But I see it uses boost, which has dlls, so wouldn't that be a problem for cross platform?

I don't know where you're seeing boost. The MySQL client library is a pure C API.



#8 noatom   Members   -  Reputation: 782

Like
0Likes
Like

Posted 27 June 2014 - 05:55 PM

Sorry, I downloaded the connectors, not the actual source. I actually have trouble finding the windows source, could you help with a link?



#9 SeanMiddleditch   Members   -  Reputation: 5078

Like
5Likes
Like

Posted 27 June 2014 - 07:12 PM

^
| oh well, I admit I didn't think of that. Also, no, I don't need it for offline use, I basically need to store ids and passwords for a multiplayer game. I guess I'll go with the mysql client library and link everything statically, including boost. Hope it works.


Then you absolutely _DO NOT_ want to care about iOS/Mac/Windows/etc. support, as it would be pure unadulterated madness to have the client connecting to the database directly.

The client should connect to some kind of front-end service (either the game over a custom protocol or an HTTP service) and make its login request to that. That service (running on an server somewhere, probably on Linux) then connects to the database, which is located internal to your network/data-centers/VPNs and behind a firewall.

#10 noatom   Members   -  Reputation: 782

Like
0Likes
Like

Posted 28 June 2014 - 04:22 AM

Ok, got the message, but still, where is the source for MySql?, I can't still find it.

 

Also, why do you think its such a bad ideea to connect to a database directly?



#11 Bluebat   Members   -  Reputation: 388

Like
1Likes
Like

Posted 28 June 2014 - 04:31 AM

 

^
| oh well, I admit I didn't think of that. Also, no, I don't need it for offline use, I basically need to store ids and passwords for a multiplayer game. I guess I'll go with the mysql client library and link everything statically, including boost. Hope it works.


Then you absolutely _DO NOT_ want to care about iOS/Mac/Windows/etc. support, as it would be pure unadulterated madness to have the client connecting to the database directly.

The client should connect to some kind of front-end service (either the game over a custom protocol or an HTTP service) and make its login request to that. That service (running on an server somewhere, probably on Linux) then connects to the database, which is located internal to your network/data-centers/VPNs and behind a firewall.

 

That.

Never give client direct access to db. A user can just take the db credentials you include in the app and dump all the password hashes from the table. You should design a safe API for the client to use (probably easiest to set it up in php, or as a part of your game server).

However, there could be a way to do it safely with client connecting directly to db if you do not want this mediator service: make stored procedures in sql (highly vendor-specific) and make sure the client cannot ever directly access the tables and only those stored procedures.



#12 noatom   Members   -  Reputation: 782

Like
0Likes
Like

Posted 28 June 2014 - 04:45 AM

I see your point regarding security. I'll go with the server and add a little encryption between the client and server. But still, how does one get hands on the MySql source? I followed the links, tried with Bazaar, no success!



#13 SimonForsman   Crossbones+   -  Reputation: 6036

Like
1Likes
Like

Posted 28 June 2014 - 09:53 AM

I see your point regarding security. I'll go with the server and add a little encryption between the client and server. But still, how does one get hands on the MySql source? I followed the links, tried with Bazaar, no success!

 

The mysql source can be found here:

http://dev.mysql.com/downloads/mysql/

 

Select "Source code" as your platform to get the source code (Same thing goes for all the connector libraries etc, just select source code as your platform if you don't want a binary package)


I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS