Jump to page: 1 2
Thread overview
Database of practicality will be an important factor for development of D language in the future
Feb 02, 2017
FrankLike
Feb 02, 2017
aberba
Feb 06, 2017
FrankLike
Feb 02, 2017
Adam D. Ruppe
Feb 02, 2017
Shachar Shemesh
Feb 02, 2017
Adam D. Ruppe
Feb 06, 2017
Jack Applegame
Feb 06, 2017
FrankLike
Feb 06, 2017
Adam D. Ruppe
Feb 06, 2017
FrankLike
Feb 06, 2017
Adam D. Ruppe
Feb 06, 2017
FrankLike
February 02, 2017
   A good language, powerful performance is on the one hand, but, first of all is practical.
No language does not involve the database, because the database is the most widely used. Why C #, Java are better than D in practical? Because the basic work is good and practical!

  There was a language is born for the database, it's called PowerBuilder, because it did not keep up with the development of the Internet era (B / S architecture), and their own development is not good, and later replaced by Java. But now, D even C / S architecture is not doing a good job.
  When I'm ready to use D, but found the poor practicality! C #, Java can do, but D can not do!
 For example, I want to do the  execution of stored procedure for MSSql、MySQL database. I found in Mysql-d, Mysql-Native, arsd, DDBC, etc. there is no result. Therefore, the project had to give up, turn to C #.

the practicality of database in D , is the basis for the development of D, will determine the future of D!

Frank

February 02, 2017
On Thursday, 2 February 2017 at 05:33:57 UTC, FrankLike wrote:
>    A good language, powerful performance is on the one hand, but, first of all is practical.
> No language does not involve the database, because the database is the most widely used. Why C #, Java are better than D in practical? Because the basic work is good and practical!
>
>   There was a language is born for the database, it's called PowerBuilder, because it did not keep up with the development of the Internet era (B / S architecture), and their own development is not good, and later replaced by Java. But now, D even C / S architecture is not doing a good job.
>   When I'm ready to use D, but found the poor practicality! C #, Java can do, but D can not do!
>  For example, I want to do the  execution of stored procedure for MSSql、MySQL database. I found in Mysql-d, Mysql-Native, arsd, DDBC, etc. there is no result. Therefore, the project had to give up, turn to C #.
>
> the practicality of database in D , is the basis for the development of D, will determine the future of D!
>
> Frank

I use mysql with for vibe.d project and either mysql-lited or mysql-native works well for me. There seem to be no mssql package though (because few people will pay to use unless it fetch them enough money for what it is worth).

I agree there are still more packages needed but they increase week by week as I've been observing.

I personally REALLY need an Amazon S3 api but vibe-s3 maintainer hasn't gotten enough time to work on it and there almost no contributions (even for S3 which is popular/the defacto in the cloud storage world). I know it sucks when you can't do it for yourself.

But we can only hope more people get motivated to contribute packages to dub. I'm quite impressed by the few companies in Github contributing/submitting their production packages to dub registry. It is only getting better day in day out.

I don't know if there is anything the D Foundation can and will do about that :)

February 02, 2017
On Thursday, 2 February 2017 at 05:33:57 UTC, FrankLike wrote:
>  For example, I want to do the  execution of stored procedure for MSSql、MySQL database. I found in Mysql-d, Mysql-Native, arsd, DDBC, etc. there is no result.

db.query("CALL my_procedure(args...)");

Should work with any libraries. Stored procedure calls are just another sql string.
February 02, 2017
On 02/02/17 14:50, Adam D. Ruppe wrote:
> On Thursday, 2 February 2017 at 05:33:57 UTC, FrankLike wrote:
>>  For example, I want to do the  execution of stored procedure for
>> MSSql、MySQL database. I found in Mysql-d, Mysql-Native, arsd, DDBC,
>> etc. there is no result.
>
> db.query("CALL my_procedure(args...)");

Generally speaking, you really don't want to do that. Ever. This code is how SQL injection vulnerabilities are born.

Arguments should ALWAYS be passed out of line of the actual call command, so that the server has no chance of confusing arguments and commands.

Sadly, that typically requires a DB library specific to the DB in use.

Shachar
February 02, 2017
On Thursday, 2 February 2017 at 13:28:48 UTC, Shachar Shemesh wrote:
> Arguments should ALWAYS be passed out of line of the actual call command, so that the server has no chance of confusing arguments and commands.

I know. That's exactly what my library does, and I assume all the others listed; `args...` there is a placeholder for binded arguments (the actual call might look something like `db.query("CALL proc(?, ?)", arg, arg2);` or similar). But CALL works the same way as UPDATE, SELECT, INSERT, etc., you can do it in sql without needing a special api function to use it.

> Sadly, that typically requires a DB library specific to the DB in use.

Every generic DB library I have ever seen abstracts placeholder arguments and most do prepared statements, which also abstract such things gnerically. I didn't mention it in my example because EVERYONE (except like universally recognized garbage like php4 lol, but I'll even exclude it because its api isn't generic) does it and I assumed that'd be common knowledge.
February 06, 2017
On Thursday, 2 February 2017 at 12:50:02 UTC, Adam D. Ruppe wrote:
> On Thursday, 2 February 2017 at 05:33:57 UTC, FrankLike wrote:
>>  For example, I want to do the  execution of stored procedure for MSSql、MySQL database. I found in Mysql-d, Mysql-Native, arsd, DDBC, etc. there is no result.
>
> db.query("CALL my_procedure(args...)");
>
> Should work with any libraries. Stored procedure calls are just another sql string.

The first,thank your arsd,it's good for mssql.

But mysqlnative.d is not good.
Please look at this:
Failed: mysql.protocol.packets.MySQLReceivedException@mysql\protocol\commands.d(721): MySQL error: PROCEDURE mydb.myProcedure can't return a result set in the given context

Thanks.

Frank
February 06, 2017
On Monday, 6 February 2017 at 12:30:11 UTC, FrankLike wrote:
> But mysqlnative.d is not good.

idk, I have never used that one.
February 06, 2017
On Monday, 6 February 2017 at 14:04:37 UTC, Adam D. Ruppe wrote:
> On Monday, 6 February 2017 at 12:30:11 UTC, FrankLike wrote:

Please help me,thank you.

1. arsd.database.ResultSet MSa = MSSqlCon.query(someCmd1);
arsd.database.ResultSet MSb = MSSqlCon.query(someCmd2);
 int icolNumA =  MSa.fieldNames.length;
 int icolNumB =  MSb.fieldNames.length;

arsd.database.DatabaseException@..\arsd\mssql.d(63): [Microsoft][ODBC SQL Server Driver]The connection is busy resulting in another hstmt

2.When I run the exe file on another computer(run "ping" is ok),get the err:

 std.socket.SocketOSException@std\socket.d(2755): Unable to connect socket: Can not connect because the target computer actively refused.

Thank you.

Frank
February 06, 2017
On Monday, 6 February 2017 at 14:17:39 UTC, FrankLike wrote:
> [Microsoft][ODBC SQL Server Driver]The connection is busy resulting in another hstmt

Process one result before trying to do another query. If you need the data stored, you can do foreach and save the parts you want to an array (it returns strings for all data types so you can append it to a string[])

>  std.socket.SocketOSException@std\socket.d(2755): Unable to connect socket: Can not connect because the target computer actively refused.

Check the firewall or connection accept settings on the computer running the database server, it is probably blocking you.
February 06, 2017
On Thursday, 2 February 2017 at 12:41:06 UTC, aberba wrote:
> On Thursday, 2 February 2017 at 05:33:57 UTC, FrankLike wrote:

>
> I use mysql with for vibe.d project and either mysql-lited or mysql-native works well for me. There seem to be no mssql package though (because few people will pay to use unless it fetch them enough money for what it is worth).
>
> [...]

I love D,thank for your answer.
« First   ‹ Prev
1 2