Discussion:
D2 (Debian) + MSSQL
Sergey via Digitalmars-d
2014-10-09 07:25:19 UTC
Permalink
I use d for some time for the job. And it is good. And I want to
use it consistently for the production, but as soon as I started
with the simplest - the connection to the database, I realized
that the language is not yet ready for it. Or suggest the use of
crutches on the forum.

So, there are plans to create a native library for connecting to
databases to begin with?

Thanks in advance
Regards, Sergey.
ketmar via Digitalmars-d
2014-10-09 07:49:12 UTC
Permalink
On Thu, 09 Oct 2014 07:25:19 +0000
Post by Sergey via Digitalmars-d
So, there are plans to create a native library for connecting to
databases to begin with?
have you tried to read the forums before posting?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20141009/31c2a71b/attachment.sig>
ketmar via Digitalmars-d
2014-10-09 07:51:14 UTC
Permalink
On Thu, 09 Oct 2014 07:25:19 +0000
Sergey via Digitalmars-d <digitalmars-d at puremagic.com> wrote:

sorry for being rude, i mean that we have mysql-native, for the start.
and we can easily use any C library. i.e. working on "native" libraries
at least started, and connecting to DB servers is possible.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20141009/5127d49f/attachment.sig>
Sergey via Digitalmars-d
2014-10-09 07:58:24 UTC
Permalink
On Thursday, 9 October 2014 at 07:51:23 UTC, ketmar via
Post by ketmar via Digitalmars-d
On Thu, 09 Oct 2014 07:25:19 +0000
sorry for being rude, i mean that we have mysql-native, for the
start.
and we can easily use any C library. i.e. working on "native"
libraries
at least started, and connecting to DB servers is possible.
I found this (and similar topics):
http://forum.dlang.org/thread/l403bf$139g$1 at digitalmars.com?page=1

But there is no good solution for the production, which need
reliability.
Sergey via Digitalmars-d
2014-10-09 08:01:12 UTC
Permalink
I tried this:
http://forum.dlang.org/thread/l403bf$139g$1 at digitalmars.com#post-l4089g:241723:241:40digitalmars.com
but does not work.
ketmar via Digitalmars-d
2014-10-09 08:08:48 UTC
Permalink
On Thu, 09 Oct 2014 07:58:24 +0000
Post by Sergey via Digitalmars-d
But there is no good solution for the production, which need
reliability.
mssql is not a database of choise. ;-) i.e. there aren't alot of people
writing DB frontends in D, and those who writing web apps using mysql.
so i don't think that you'll find something better that what we have
now. virtually nobody is using mssql with GNU/Linux.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20141009/87e34227/attachment-0001.sig>
Russel Winder via Digitalmars-d
2014-10-09 08:24:13 UTC
Permalink
On Thu, 09 Oct 2014 07:58:24 +0000 Sergey via Digitalmars-d
Post by Sergey via Digitalmars-d
But there is no good solution for the production, which need
reliability.
mssql is not a database of choise. ;-) i.e. there aren't alot of
people writing DB frontends in D, and those who writing web apps
using mysql. so i don't think that you'll find something better
that what we have now. virtually nobody is using mssql with
GNU/Linux.
And most people are now using MariaDB!

- --
Russel.
=============================================================================
Dr Russel Winder t: +44 20 7585 2200 voip:
sip:russel.winder at ekiga.net
41 Buckmaster Road m: +44 7770 465 077 xmpp: russel at winder.org.uk
London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Paulo Pinto via Digitalmars-d
2014-10-09 17:11:59 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Thu, 09 Oct 2014 07:58:24 +0000 Sergey via Digitalmars-d
Post by Sergey via Digitalmars-d
But there is no good solution for the production, which need
reliability.
mssql is not a database of choise. ;-) i.e. there aren't alot of
people writing DB frontends in D, and those who writing web apps
using mysql. so i don't think that you'll find something better
that what we have now. virtually nobody is using mssql with
GNU/Linux.
And most people are now using MariaDB!
Really? I am yet to do any project with it instead of MySQL.

--
Paulo
Dicebot via Digitalmars-d
2014-10-09 17:23:19 UTC
Permalink
Post by Paulo Pinto via Digitalmars-d
Really? I am yet to do any project with it instead of MySQL.
--
Paulo
All I know is that in Arch Linux MySQL is not even in official
repos anymore, only MariaDB is there :)
Paulo Pinto via Digitalmars-d
2014-10-09 18:36:13 UTC
Permalink
Post by Paulo Pinto via Digitalmars-d
Really? I am yet to do any project with it instead of MySQL.
--
Paulo
All I know is that in Arch Linux MySQL is not even in official repos
anymore, only MariaDB is there :)
The Enterprise only knows RedHat, SuSE and Ubuntu as GNU/Linux
distributions. :)
Dicebot via Digitalmars-d
2014-10-09 18:47:56 UTC
Permalink
Post by Paulo Pinto via Digitalmars-d
All I know is that in Arch Linux MySQL is not even in official repos
anymore, only MariaDB is there :)
The Enterprise only knows RedHat, SuSE and Ubuntu as GNU/Linux
distributions. :)
Arch Linux knows no stinking enterprise :P
Nick Sabalausky via Digitalmars-d
2014-10-09 20:42:16 UTC
Permalink
Post by Dicebot via Digitalmars-d
Post by Paulo Pinto via Digitalmars-d
All I know is that in Arch Linux MySQL is not even in official repos
anymore, only MariaDB is there :)
The Enterprise only knows RedHat, SuSE and Ubuntu as GNU/Linux
distributions. :)
Arch Linux knows no stinking enterprise :P
You made him sad!
Loading Image...

:P
Sergey via Digitalmars-d
2014-10-10 01:33:22 UTC
Permalink
Well, thanks for the explanation, now I understand more at the
expense of Microsoft.
It is a pity that it is not possible to write a client on D for
mssql now.
I liked the language D.

Thank you all ...

P.s.
I work in a company where a very large database, and very
stability is important, data integrity, etc. And mysql or MariaDB
not suitable for these tasks. Maybe in the future turn out to use
PostgreSQL.
Nick Sabalausky via Digitalmars-d
2014-10-10 02:32:28 UTC
Permalink
Well, thanks for the explanation, now I understand more at the expense
of Microsoft.
It is a pity that it is not possible to write a client on D for mssql now.
I liked the language D.
Thank you all ...
P.s.
I work in a company where a very large database, and very stability is
important, data integrity, etc. And mysql or MariaDB not suitable for
these tasks. Maybe in the future turn out to use PostgreSQL.
As people have said, you can just use a C lib. D links to C.
Rikki Cattermole via Digitalmars-d
2014-10-10 05:31:59 UTC
Permalink
Post by Nick Sabalausky via Digitalmars-d
Well, thanks for the explanation, now I understand more at the expense
of Microsoft.
It is a pity that it is not possible to write a client on D for mssql now.
I liked the language D.
Thank you all ...
P.s.
I work in a company where a very large database, and very stability is
important, data integrity, etc. And mysql or MariaDB not suitable for
these tasks. Maybe in the future turn out to use PostgreSQL.
As people have said, you can just use a C lib. D links to C.
On that note example: http://www.freetds.org/ which is used with OpenDBX.
bachmeier via Digitalmars-d
2014-10-10 08:16:14 UTC
Permalink
Post by Sergey via Digitalmars-d
Well, thanks for the explanation, now I understand more at the
expense of Microsoft.
It is a pity that it is not possible to write a client on D for
mssql now.
I liked the language D.
Thank you all ...
P.s.
I work in a company where a very large database, and very
stability is important, data integrity, etc. And mysql or
MariaDB not suitable for these tasks. Maybe in the future turn
out to use PostgreSQL.
If you want stability, you're a lot better off using tested C
bindings than a lightly-tested native D binding. One of the
advantages of D's interoperability with C libraries is that you
don't have to rewrite code. A bigger advantage is that you can
take advantage of all the testing that has been done on those C
libraries.
Sergey via Digitalmars-d
2014-10-14 04:46:17 UTC
Permalink
I try to do in this:
D version: http://pastebin.com/7tGyytDh
Tds file: http://pastebin.com/JCA8XQH0
C version: http://pastebin.com/FWJM4B6X

First I checked the C version.

When I did this:
$ gcc -o connect_mssql connect_mssql.c
I got these errors:

/tmp/ccmW3YHR.o: In function `main':
connect_mssql.c:(.text+0x18): undefined reference to `dbinit'
connect_mssql.c:(.text+0x50): undefined reference to `dblogin'
connect_mssql.c:(.text+0xaf): undefined reference to `dbsetlname'
connect_mssql.c:(.text+0xce): undefined reference to `dbsetlname'
connect_mssql.c:(.text+0xed): undefined reference to `dbsetlname'
connect_mssql.c:(.text+0x12d): undefined reference to `dbsetlname'
connect_mssql.c:(.text+0x14c): undefined reference to `tdsdbopen'
connect_mssql.c:(.text+0x19b): undefined reference to `dbuse'
connect_mssql.c:(.text+0x1dd): undefined reference to
`dbloginfree'
connect_mssql.c:(.text+0x1f4): undefined reference to `dbcmd'
connect_mssql.c:(.text+0x203): undefined reference to `dbsqlexec'
connect_mssql.c:(.text+0x245): undefined reference to `dbresults'
connect_mssql.c:(.text+0x277): undefined reference to `dbbind'
connect_mssql.c:(.text+0x2a9): undefined reference to `dbbind'
connect_mssql.c:(.text+0x2e4): undefined reference to `dbnextrow'
connect_mssql.c:(.text+0x2f8): undefined reference to `dbfreebuf'
connect_mssql.c:(.text+0x307): undefined reference to `dbclose'
connect_mssql.c:(.text+0x30c): undefined reference to `dbexit'
collect2: error: ld returned 1 exit status

And then I added this: "-l sybdb" and it works.
$ gcc -o connect_mssql connect_mssql.c -l sybdb
$ ./connect_mssql
(I got some data from sql server)

Then I tried to do it on D:
$ dmd test_tds_connect.d
And I received similar errors:

test_tds_connect.o: In function `_Dmain':
test_tds_connect.d:(.text._Dmain+0x64): undefined reference to
`dbinit'
test_tds_connect.d:(.text._Dmain+0x88): undefined reference to
`dblogin'
test_tds_connect.d:(.text._Dmain+0xc4): undefined reference to
`dbsetluser'
test_tds_connect.d:(.text._Dmain+0xdb): undefined reference to
`dbsetlpwd'
test_tds_connect.d:(.text._Dmain+0xf2): undefined reference to
`dbsetlapp'
test_tds_connect.d:(.text._Dmain+0x12c): undefined reference to
`dbsetlhost'
test_tds_connect.d:(.text._Dmain+0x140): undefined reference to
`dbopen'
test_tds_connect.d:(.text._Dmain+0x18c): undefined reference to
`dbuse'
test_tds_connect.d:(.text._Dmain+0x1df): undefined reference to
`dbloginfree'
test_tds_connect.d:(.text._Dmain+0x1f0): undefined reference to
`dbcmd'
test_tds_connect.d:(.text._Dmain+0x1fe): undefined reference to
`dbsqlexec'
test_tds_connect.d:(.text._Dmain+0x22b): undefined reference to
`dbresults'
test_tds_connect.d:(.text._Dmain+0x243): undefined reference to
`dbbind'
test_tds_connect.d:(.text._Dmain+0x25b): undefined reference to
`dbbind'
test_tds_connect.d:(.text._Dmain+0x273): undefined reference to
`dbbind'
test_tds_connect.d:(.text._Dmain+0x281): undefined reference to
`dbnextrow'
test_tds_connect.d:(.text._Dmain+0x2d4): undefined reference to
`dbfreebuf'
test_tds_connect.d:(.text._Dmain+0x2df): undefined reference to
`dbclose'
test_tds_connect.d:(.text._Dmain+0x2e4): undefined reference to
`dbexit'
collect2: error: ld returned 1 exit status
--- errorlevel 1

I need to add sybdb when building on D?
How to do it?

Thanks in advance.
Sergey via Digitalmars-d
2014-10-14 06:11:56 UTC
Permalink
Post by Sergey via Digitalmars-d
D version: http://pastebin.com/7tGyytDh
Tds file: http://pastebin.com/JCA8XQH0
C version: http://pastebin.com/FWJM4B6X
First I checked the C version.
$ gcc -o connect_mssql connect_mssql.c
connect_mssql.c:(.text+0x18): undefined reference to `dbinit'
connect_mssql.c:(.text+0x50): undefined reference to `dblogin'
connect_mssql.c:(.text+0xaf): undefined reference to
`dbsetlname'
connect_mssql.c:(.text+0xce): undefined reference to
`dbsetlname'
connect_mssql.c:(.text+0xed): undefined reference to
`dbsetlname'
connect_mssql.c:(.text+0x12d): undefined reference to
`dbsetlname'
connect_mssql.c:(.text+0x14c): undefined reference to
`tdsdbopen'
connect_mssql.c:(.text+0x19b): undefined reference to `dbuse'
connect_mssql.c:(.text+0x1dd): undefined reference to
`dbloginfree'
connect_mssql.c:(.text+0x1f4): undefined reference to `dbcmd'
connect_mssql.c:(.text+0x203): undefined reference to
`dbsqlexec'
connect_mssql.c:(.text+0x245): undefined reference to
`dbresults'
connect_mssql.c:(.text+0x277): undefined reference to `dbbind'
connect_mssql.c:(.text+0x2a9): undefined reference to `dbbind'
connect_mssql.c:(.text+0x2e4): undefined reference to
`dbnextrow'
connect_mssql.c:(.text+0x2f8): undefined reference to
`dbfreebuf'
connect_mssql.c:(.text+0x307): undefined reference to `dbclose'
connect_mssql.c:(.text+0x30c): undefined reference to `dbexit'
collect2: error: ld returned 1 exit status
And then I added this: "-l sybdb" and it works.
$ gcc -o connect_mssql connect_mssql.c -l sybdb
$ ./connect_mssql
(I got some data from sql server)
$ dmd test_tds_connect.d
test_tds_connect.d:(.text._Dmain+0x64): undefined reference to
`dbinit'
test_tds_connect.d:(.text._Dmain+0x88): undefined reference to
`dblogin'
test_tds_connect.d:(.text._Dmain+0xc4): undefined reference to
`dbsetluser'
test_tds_connect.d:(.text._Dmain+0xdb): undefined reference to
`dbsetlpwd'
test_tds_connect.d:(.text._Dmain+0xf2): undefined reference to
`dbsetlapp'
test_tds_connect.d:(.text._Dmain+0x12c): undefined reference to
`dbsetlhost'
test_tds_connect.d:(.text._Dmain+0x140): undefined reference to
`dbopen'
test_tds_connect.d:(.text._Dmain+0x18c): undefined reference to
`dbuse'
test_tds_connect.d:(.text._Dmain+0x1df): undefined reference to
`dbloginfree'
test_tds_connect.d:(.text._Dmain+0x1f0): undefined reference to
`dbcmd'
test_tds_connect.d:(.text._Dmain+0x1fe): undefined reference to
`dbsqlexec'
test_tds_connect.d:(.text._Dmain+0x22b): undefined reference to
`dbresults'
test_tds_connect.d:(.text._Dmain+0x243): undefined reference to
`dbbind'
test_tds_connect.d:(.text._Dmain+0x25b): undefined reference to
`dbbind'
test_tds_connect.d:(.text._Dmain+0x273): undefined reference to
`dbbind'
test_tds_connect.d:(.text._Dmain+0x281): undefined reference to
`dbnextrow'
test_tds_connect.d:(.text._Dmain+0x2d4): undefined reference to
`dbfreebuf'
test_tds_connect.d:(.text._Dmain+0x2df): undefined reference to
`dbclose'
test_tds_connect.d:(.text._Dmain+0x2e4): undefined reference to
`dbexit'
collect2: error: ld returned 1 exit status
--- errorlevel 1
I need to add sybdb when building on D?
How to do it?
Thanks in advance.
Wrong, I need to have:
$ dmd test_tds_connect.d tds.d

test_tds_connect.o: In function `_Dmain':
tds.d:(.text._Dmain+0x64): undefined reference to `dbinit'
tds.d:(.text._Dmain+0x88): undefined reference to `dblogin'
tds.d:(.text._Dmain+0x140): undefined reference to `dbopen'
tds.d:(.text._Dmain+0x18c): undefined reference to `dbuse'
tds.d:(.text._Dmain+0x1df): undefined reference to `dbloginfree'
tds.d:(.text._Dmain+0x1f0): undefined reference to `dbcmd'
tds.d:(.text._Dmain+0x1fe): undefined reference to `dbsqlexec'
tds.d:(.text._Dmain+0x22b): undefined reference to `dbresults'
tds.d:(.text._Dmain+0x243): undefined reference to `dbbind'
tds.d:(.text._Dmain+0x25b): undefined reference to `dbbind'
tds.d:(.text._Dmain+0x273): undefined reference to `dbbind'
tds.d:(.text._Dmain+0x281): undefined reference to `dbnextrow'
tds.d:(.text._Dmain+0x2d4): undefined reference to `dbfreebuf'
tds.d:(.text._Dmain+0x2df): undefined reference to `dbclose'
tds.d:(.text._Dmain+0x2e4): undefined reference to `dbexit'
test_tds_connect.o: In function `dbsetluser':
tds.d:(.text.dbsetluser+0x18): undefined reference to `dbsetlname'
test_tds_connect.o: In function `dbsetlpwd':
tds.d:(.text.dbsetlpwd+0x18): undefined reference to `dbsetlname'
test_tds_connect.o: In function `dbsetlapp':
tds.d:(.text.dbsetlapp+0x18): undefined reference to `dbsetlname'
test_tds_connect.o: In function `dbsetlhost':
tds.d:(.text.dbsetlhost+0x18): undefined reference to `dbsetlname'
collect2: error: ld returned 1 exit status
--- errorlevel 1
Jacob Carlborg via Digitalmars-d
2014-10-14 06:34:36 UTC
Permalink
Post by Sergey via Digitalmars-d
$ dmd test_tds_connect.d tds.d
You can use "rdmd" to compile and run an application:

$ rdmd test_tds_connect.d

It will automatically find all (D) dependencies for "test_tds_connect"
and compile those as well. But you still need to link with the C
library, as in the C example.

$ rdmd -L-lsybdb test_tds_connect.d

"-L" is the linker flag.
--
/Jacob Carlborg
ketmar via Digitalmars-d
2014-10-14 09:53:44 UTC
Permalink
On Tue, 14 Oct 2014 08:34:36 +0200
Post by Jacob Carlborg via Digitalmars-d
Post by Sergey via Digitalmars-d
$ dmd test_tds_connect.d tds.d
$ rdmd test_tds_connect.d
It will automatically find all (D) dependencies for
"test_tds_connect" and compile those as well. But you still need to
link with the C library, as in the C example.
$ rdmd -L-lsybdb test_tds_connect.d
"-L" is the linker flag.
also, rdmd has flag -build-only, which build binary and places it in
the current directory. so rdmd can be used as build tool for simple
projects.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20141014/df536447/attachment-0001.sig>
Sergey via Digitalmars-d
2014-10-15 01:48:58 UTC
Permalink
Yes, it works now:
$ rdmd -L-lsybdb test_tds_connect.d
(If somehow get rid of "-L-lsybdb". Maybe add it somewhere in the
code ...?)

I got some data from the server, and it is certainly:
005ᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵᅵ... etc.

I've written before transcoding function, and I need to get a
byte string for this. So how to do it?

Now it's like:
DBCHAR[255] table_field;
dbbind(dbconn, 1, NTBSTRINGBIND, 0, cast(BYTE*)&table_field);

But I need to may be:
ubyte[] ubyte_value = [];
dbbind(dbconn, 1, NTBSTRINGBIND, 0, ubyte_value);
(it does not work of course)

Thanks in advance.
ketmar via Digitalmars-d
2014-10-15 01:55:50 UTC
Permalink
On Wed, 15 Oct 2014 01:48:58 +0000
Post by Sergey via Digitalmars-d
DBCHAR[255] table_field;
dbbind(dbconn, 1, NTBSTRINGBIND, 0, cast(BYTE*)&table_field);
ubyte[] ubyte_value = [];
dbbind(dbconn, 1, NTBSTRINGBIND, 0, ubyte_value);
(it does not work of course)
cast to the rescue! any pointer is an array too. just cast it!
`cast(ubyte[])table_field`, for example.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20141015/d0681bb6/attachment-0001.sig>
Sergey via Digitalmars-d
2014-10-15 02:37:23 UTC
Permalink
Do you mean:
ubyte[] ubyte_value = [];
dbbind(dbconn, 1, NTBSTRINGBIND, 0, cast(ubyte[])ubyte_value);

This error is:
test_tds_connect.d(84): Error: function tds.dbbind
(tds_dblib_dbprocess* dbproc, int column, int vartype, int
varlen, ubyte* varaddr) is not callable using argument types
(tds_dblib_dbprocess*, int, int, int, ubyte[])
ketmar via Digitalmars-d
2014-10-15 02:44:45 UTC
Permalink
On Wed, 15 Oct 2014 02:37:23 +0000
Post by Sergey via Digitalmars-d
ubyte[] ubyte_value = [];
dbbind(dbconn, 1, NTBSTRINGBIND, 0, cast(ubyte[])ubyte_value);
of course not. cast your DBCHAR array from the first example *after*
you called 'dbbind'.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20141015/a12a2d06/attachment.sig>
Sergey via Digitalmars-d
2014-10-15 05:53:52 UTC
Permalink
Exactly, it's just, sorry... :)

Well, now everything works, thanks!
Now I will test and then will create a convenient wrapper.
Jacob Carlborg via Digitalmars-d
2014-10-15 06:20:50 UTC
Permalink
Post by Jacob Carlborg via Digitalmars-d
$ rdmd -L-lsybdb test_tds_connect.d
(If somehow get rid of "-L-lsybdb". Maybe add it somewhere in the code
pragma(lib, "sybdb");

But that won't work with GDC. I'm not sure if it works with LDC.
--
/Jacob Carlborg
Sergey via Digitalmars-d
2014-10-15 06:51:09 UTC
Permalink
On Wednesday, 15 October 2014 at 06:20:50 UTC, Jacob Carlborg
Post by Jacob Carlborg via Digitalmars-d
Post by Jacob Carlborg via Digitalmars-d
$ rdmd -L-lsybdb test_tds_connect.d
(If somehow get rid of "-L-lsybdb". Maybe add it somewhere in
the code
pragma(lib, "sybdb");
But that won't work with GDC. I'm not sure if it works with LDC.
Yes, it works on the DMD, thanks !!!
Now it is universally! I love it!

Now just:
$ rdmd test_tds_connect.d
Sergey via Digitalmars-d
2014-10-17 05:24:52 UTC
Permalink
When I get the data from MsSQL, I use this function to convert to
Unicode:

char[] CP1251_TO_UTF8(char[] char_par) {
ubyte[] ubyte_str = cast(ubyte[])char_par;
int[] int_array =
[0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0402,0x0403,0x201A,0x0453,0x201E,0x2026,0x2020,0x2021,0x20AC,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F,0x0452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,0x0000,0x2122,0x0459,0x203A,0x045A,0x045C,0x045B,0x045F,0x00A0,0x040E,0x045E,0x0408,0x00A4,0x0490,0x00A6,0x00A7,0x0401,0x00A9,0x0404,0x00AB,0x00AC,0x00AD,0x00AE,0x0407,0x00B0,0x00B1,0x0406,0x0456,0x0491,0x00B5,0x00B6,0x00B7,0x0451,0x2116,0x0454,0x00BB,0x0458,0x0405,0x0455,0x0457,0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F,0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427,0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447,0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F];
char[] char_var = [];
for (int i=0; i<ubyte_str.length; i++) {
std.utf.encode(char_var, int_array[ubyte_str[i]]);
}
return char_var;
}


And it works well.
But if I need to make a request with the condition, such as:
"select some_field from some_table where some_field =
'МекПтПрый текст'"
so I have to do conversion in cp1251 and send it on line here:
dbcmd(dbconn, "select some_field from some_table where
some_field = 'зМачеМОе'" .ptr);

How best to do this?

Or if I already have a byte string in cp1251 how to translate it
into a normal string?

ubyte[] cp1251_ubyte_str = [115, 101, 108, 101, 99, 116, 32, 115,
111, 109, 101, 95, 102, 105, 101, 108, 100, 32, 102, 114, 111,
109, 32, 115, 111, 109, 101, 95, 116, 97, 98, 108, 101, 32, 119,
104, 101, 114, 101, 32, 115, 111, 109, 101, 95, 102, 105, 101,
108, 100, 32, 61, 32, 39, 167, 173, 160, 231, 165, 173, 168, 165,
39];

Thanks in advance.
Sergey via Digitalmars-d
2014-10-17 06:58:29 UTC
Permalink
Any help?
Sergey via Digitalmars-d
2014-10-17 07:56:27 UTC
Permalink
Sorry, everything turned out simply, I'm very inattentive ...

via Digitalmars-d
2014-10-09 18:20:15 UTC
Permalink
Post by Paulo Pinto via Digitalmars-d
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Thu, 09 Oct 2014 07:58:24 +0000 Sergey via Digitalmars-d
Post by Sergey via Digitalmars-d
But there is no good solution for the production, which need
reliability.
mssql is not a database of choise. ;-) i.e. there aren't alot of
people writing DB frontends in D, and those who writing web
apps
using mysql. so i don't think that you'll find something
better
that what we have now. virtually nobody is using mssql with
GNU/Linux.
And most people are now using MariaDB!
Really? I am yet to do any project with it instead of MySQL.
Its protocol (and AFAIK database layout) is binary compatible to
MySQL, so you usually wouldn't even notice it.
Jacob Carlborg via Digitalmars-d
2014-10-10 07:02:16 UTC
Permalink
Post by ketmar via Digitalmars-d
virtually nobody is using mssql with GNU/Linux.
1. Who said anything about GNU/Linux

2. At my previous work we used SQL Server together with Ruby on Rails
running on Linux. Odd fit, I know
--
/Jacob Carlborg
ketmar via Digitalmars-d
2014-10-10 07:40:36 UTC
Permalink
On Fri, 10 Oct 2014 09:02:16 +0200
Post by Jacob Carlborg via Digitalmars-d
Post by ketmar via Digitalmars-d
virtually nobody is using mssql with GNU/Linux.
1. Who said anything about GNU/Linux
topicstarter. the word "Debian" has very defined meaning.
Post by Jacob Carlborg via Digitalmars-d
2. At my previous work we used SQL Server together with Ruby on Rails
running on Linux. Odd fit, I know
that's why i added the word "virtually". ;-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20141010/76abec7e/attachment.sig>
Jacob Carlborg via Digitalmars-d
2014-10-10 14:21:12 UTC
Permalink
Post by ketmar via Digitalmars-d
topicstarter. the word "Debian" has very defined meaning.
Point taken, missed that :)
--
/Jacob Carlborg
ketmar via Digitalmars-d
2014-10-10 14:35:39 UTC
Permalink
On Fri, 10 Oct 2014 16:21:12 +0200
Post by Jacob Carlborg via Digitalmars-d
Post by ketmar via Digitalmars-d
topicstarter. the word "Debian" has very defined meaning.
Point taken, missed that :)
that's why i switched to maillist. nice archives, nice threading, nice
searching and subject text in each line. ;-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20141010/c95af7fe/attachment.sig>
Jacob Carlborg via Digitalmars-d
2014-10-10 15:59:04 UTC
Permalink
Post by ketmar via Digitalmars-d
that's why i switched to maillist. nice archives, nice threading, nice
searching and subject text in each line. ;-)
I have that as well, in Thunderbird. I just somehow filtered out
"Debian", perhaps due to the parentheses, perhaps a Lisp filter :)
--
/Jacob Carlborg
Dicebot via Digitalmars-d
2014-10-09 13:14:18 UTC
Permalink
Post by Sergey via Digitalmars-d
So, there are plans to create a native library for connecting
to databases to begin with?
To put it shortly - very unlikely. Well, unless you do it
yourself, of course, and contribute to the community :) It has a
very small application domain and is not a blocker in a sense
that C bindings can still be used. I'd consider it a very low
priority issues on its own.
David Eagen via Digitalmars-d
2014-10-09 15:52:46 UTC
Permalink
If there is a C library for MSSQL you should be able to use that
from your D code. If you do, it would be handy for others if you
could publish any bindings you create as a dub package
(code.dlang.org).
Loading...