digitalmars.D - D2 (Debian) + MSSQL
- Sergey (9/9) Oct 09 2014 I use d for some time for the job. And it is good. And I want to
- ketmar via Digitalmars-d (3/5) Oct 09 2014 have you tried to read the forums before posting?
- ketmar via Digitalmars-d (5/5) Oct 09 2014 On Thu, 09 Oct 2014 07:25:19 +0000
- Sergey (6/13) Oct 09 2014 I found this (and similar topics):
- Sergey (3/3) Oct 09 2014 I tried this:
- ketmar via Digitalmars-d (6/8) Oct 09 2014 mssql is not a database of choise. ;-) i.e. there aren't alot of people
- Jacob Carlborg (6/7) Oct 10 2014 1. Who said anything about GNU/Linux
- ketmar via Digitalmars-d (4/10) Oct 10 2014 topicstarter. the word "Debian" has very defined meaning.
- Jacob Carlborg (4/5) Oct 10 2014 Point taken, missed that :)
- ketmar via Digitalmars-d (4/7) Oct 10 2014 that's why i switched to maillist. nice archives, nice threading, nice
- Jacob Carlborg (5/7) Oct 10 2014 I have that as well, in Thunderbird. I just somehow filtered out
- Russel Winder via Digitalmars-d (17/28) Oct 09 2014 -----BEGIN PGP SIGNED MESSAGE-----
- Paulo Pinto (4/19) Oct 09 2014 Really? I am yet to do any project with it instead of MySQL.
- Dicebot (3/6) Oct 09 2014 All I know is that in Arch Linux MySQL is not even in official
- Paulo Pinto (3/10) Oct 09 2014 The Enterprise only knows RedHat, SuSE and Ubuntu as GNU/Linux
- Dicebot (2/8) Oct 09 2014 Arch Linux knows no stinking enterprise :P
- Nick Sabalausky (4/12) Oct 09 2014 You made him sad!
- Sergey (11/11) Oct 09 2014 Well, thanks for the explanation, now I understand more at the
- Nick Sabalausky (2/11) Oct 09 2014 As people have said, you can just use a C lib. D links to C.
- Rikki Cattermole (2/16) Oct 09 2014 On that note example: http://www.freetds.org/ which is used with OpenDBX...
- bachmeier (7/18) Oct 10 2014 If you want stability, you're a lot better off using tested C
- Sergey (80/80) Oct 13 2014 I try to do in this:
- Sergey (29/118) Oct 13 2014 Wrong, I need to have:
- Jacob Carlborg (10/12) Oct 13 2014 You can use "rdmd" to compile and run an application:
- ketmar via Digitalmars-d (5/21) Oct 14 2014 also, rdmd has flag -build-only, which build binary and places it in
- Sergey (16/16) Oct 14 2014 Yes, it works now:
- ketmar via Digitalmars-d (4/12) Oct 14 2014 cast to the rescue! any pointer is an array too. just cast it!
- Sergey (8/8) Oct 14 2014 Do you mean:
- ketmar via Digitalmars-d (4/7) Oct 14 2014 of course not. cast your DBCHAR array from the first example *after*
- Sergey (3/3) Oct 14 2014 Exactly, it's just, sorry... :)
- Jacob Carlborg (5/8) Oct 14 2014 pragma(lib, "sybdb");
- Sergey (6/13) Oct 14 2014 Yes, it works on the DMD, thanks !!!
- Sergey (29/29) Oct 16 2014 When I get the data from MsSQL, I use this function to convert to
- Sergey (1/1) Oct 16 2014 Any help?
- Sergey (1/1) Oct 17 2014 Sorry, everything turned out simply, I'm very inattentive ...
- Jacob Carlborg (4/6) Oct 17 2014 Doesn't Sql Server uses UC2?
- Sergey (10/15) Oct 20 2014 I finished two functions: utf8 -> sp1251 and sp1251 -> utf8, and
- "Marc =?UTF-8?B?U2Now7x0eiI=?= <schuetzm gmx.net> (3/26) Oct 09 2014 Its protocol (and AFAIK database layout) is binary compatible to
- Dicebot (6/8) Oct 09 2014 To put it shortly - very unlikely. Well, unless you do it
- David Eagen (4/4) Oct 09 2014 If there is a C library for MSSQL you should be able to use that
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.
Oct 09 2014
On Thu, 09 Oct 2014 07:25:19 +0000 Sergey via Digitalmars-d <digitalmars-d puremagic.com> wrote:So, there are plans to create a native library for connecting to=20 databases to begin with?have you tried to read the forums before posting?
Oct 09 2014
On Thu, 09 Oct 2014 07:25:19 +0000 Sergey via Digitalmars-d <digitalmars-d 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.
Oct 09 2014
On Thursday, 9 October 2014 at 07:51:23 UTC, ketmar via Digitalmars-d wrote:On Thu, 09 Oct 2014 07:25:19 +0000 Sergey via Digitalmars-d <digitalmars-d 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.I found this (and similar topics): http://forum.dlang.org/thread/l403bf$139g$1 digitalmars.com?page=1 But there is no good solution for the production, which need reliability.
Oct 09 2014
I tried this: http://forum.dlang.org/thread/l403bf$139g$1 digitalmars.com#post-l4089g:241723:241:40digitalmars.com but does not work.
Oct 09 2014
On Thu, 09 Oct 2014 07:58:24 +0000 Sergey via Digitalmars-d <digitalmars-d puremagic.com> wrote:But there is no good solution for the production, which need=20 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.
Oct 09 2014
On 09/10/14 10:08, ketmar via Digitalmars-d wrote: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
Oct 10 2014
On Fri, 10 Oct 2014 09:02:16 +0200 Jacob Carlborg via Digitalmars-d <digitalmars-d puremagic.com> wrote:On 09/10/14 10:08, ketmar via Digitalmars-d wrote: =20topicstarter. the word "Debian" has very defined meaning.virtually nobody is using mssql with GNU/Linux.1. Who said anything about GNU/Linux2. At my previous work we used SQL Server together with Ruby on Rails=20 running on Linux. Odd fit, I knowthat's why i added the word "virtually". ;-)
Oct 10 2014
On 10/10/14 09:40, ketmar via Digitalmars-d wrote:topicstarter. the word "Debian" has very defined meaning.Point taken, missed that :) -- /Jacob Carlborg
Oct 10 2014
On Fri, 10 Oct 2014 16:21:12 +0200 Jacob Carlborg via Digitalmars-d <digitalmars-d puremagic.com> wrote:On 10/10/14 09:40, ketmar via Digitalmars-d wrote:that's why i switched to maillist. nice archives, nice threading, nice searching and subject text in each line. ;-)topicstarter. the word "Debian" has very defined meaning.Point taken, missed that :)
Oct 10 2014
On 2014-10-10 16:35, ketmar via Digitalmars-d wrote: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
Oct 10 2014
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 09/10/14 09:08, ketmar via Digitalmars-d wrote:On Thu, 09 Oct 2014 07:58:24 +0000 Sergey via Digitalmars-d <digitalmars-d puremagic.com> wrote:And most people are now using MariaDB! - -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlQ2Ri0ACgkQ+ooS3F10Be8FqACfc4ewOblXohqUh6kymSmQFsoe 3YYAoOoCausvhfVwh7ddq9nKiDh0bi7H =cAAU -----END PGP SIGNATURE-----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.
Oct 09 2014
Am 09.10.2014 um 10:24 schrieb Russel Winder via Digitalmars-d:-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 09/10/14 09:08, ketmar via Digitalmars-d wrote:Really? I am yet to do any project with it instead of MySQL. -- PauloOn Thu, 09 Oct 2014 07:58:24 +0000 Sergey via Digitalmars-d <digitalmars-d puremagic.com> wrote:And most people are now using MariaDB!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.
Oct 09 2014
On Thursday, 9 October 2014 at 17:11:57 UTC, Paulo Pinto wrote:Really? I am yet to do any project with it instead of MySQL. -- PauloAll I know is that in Arch Linux MySQL is not even in official repos anymore, only MariaDB is there :)
Oct 09 2014
Am 09.10.2014 um 19:23 schrieb Dicebot:On Thursday, 9 October 2014 at 17:11:57 UTC, Paulo Pinto wrote:The Enterprise only knows RedHat, SuSE and Ubuntu as GNU/Linux distributions. :)Really? I am yet to do any project with it instead of MySQL. -- PauloAll I know is that in Arch Linux MySQL is not even in official repos anymore, only MariaDB is there :)
Oct 09 2014
On Thursday, 9 October 2014 at 18:36:10 UTC, Paulo Pinto wrote:Am 09.10.2014 um 19:23 schrieb Dicebot:Arch Linux knows no stinking enterprise :PAll 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. :)
Oct 09 2014
On 10/09/2014 02:47 PM, Dicebot wrote:On Thursday, 9 October 2014 at 18:36:10 UTC, Paulo Pinto wrote:You made him sad! http://www.semitwist.com/download/sadpicard.jpg :PAm 09.10.2014 um 19:23 schrieb Dicebot:Arch Linux knows no stinking enterprise :PAll 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. :)
Oct 09 2014
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.
Oct 09 2014
On 10/09/2014 09:33 PM, Sergey wrote: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.
Oct 09 2014
On 10/10/2014 3:32 p.m., Nick Sabalausky wrote:On 10/09/2014 09:33 PM, Sergey wrote:On that note example: http://www.freetds.org/ which is used with OpenDBX.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.
Oct 09 2014
On Friday, 10 October 2014 at 01:33:23 UTC, Sergey wrote: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.
Oct 10 2014
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.
Oct 13 2014
On Tuesday, 14 October 2014 at 04:46:19 UTC, Sergey wrote: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.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
Oct 13 2014
On 14/10/14 08:11, Sergey wrote:Wrong, I need to have: $ dmd test_tds_connect.d tds.dYou 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
Oct 13 2014
On Tue, 14 Oct 2014 08:34:36 +0200 Jacob Carlborg via Digitalmars-d <digitalmars-d puremagic.com> wrote:On 14/10/14 08:11, Sergey wrote: =20also, 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.Wrong, I need to have: $ dmd test_tds_connect.d tds.d=20 You can use "rdmd" to compile and run an application: =20 $ rdmd test_tds_connect.d =20 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. =20 $ rdmd -L-lsybdb test_tds_connect.d =20 "-L" is the linker flag.
Oct 14 2014
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.
Oct 14 2014
On Wed, 15 Oct 2014 01:48:58 +0000 Sergey via Digitalmars-d <digitalmars-d puremagic.com> wrote:Now it's like: DBCHAR[255] table_field; dbbind(dbconn, 1, NTBSTRINGBIND, 0, cast(BYTE*)&table_field); =20 But I need to may be: ubyte[] ubyte_value =3D []; 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.
Oct 14 2014
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[])
Oct 14 2014
On Wed, 15 Oct 2014 02:37:23 +0000 Sergey via Digitalmars-d <digitalmars-d puremagic.com> wrote:Do you mean: ubyte[] ubyte_value =3D []; dbbind(dbconn, 1, NTBSTRINGBIND, 0, cast(ubyte[])ubyte_value);of course not. cast your DBCHAR array from the first example *after* you called 'dbbind'.
Oct 14 2014
Exactly, it's just, sorry... :) Well, now everything works, thanks! Now I will test and then will create a convenient wrapper.
Oct 14 2014
On 2014-10-15 03:48, Sergey wrote:Yes, it works now: $ rdmd -L-lsybdb test_tds_connect.d (If somehow get rid of "-L-lsybdb". Maybe add it somewhere in the codepragma(lib, "sybdb"); But that won't work with GDC. I'm not sure if it works with LDC. -- /Jacob Carlborg
Oct 14 2014
On Wednesday, 15 October 2014 at 06:20:50 UTC, Jacob Carlborg wrote:On 2014-10-15 03:48, Sergey wrote:Yes, it works on the DMD, thanks !!! Now it is universally! I love it! Now just: $ rdmd test_tds_connect.dYes, it works now: $ rdmd -L-lsybdb test_tds_connect.d (If somehow get rid of "-L-lsybdb". Maybe add it somewhere in the codepragma(lib, "sybdb"); But that won't work with GDC. I'm not sure if it works with LDC.
Oct 14 2014
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.
Oct 16 2014
Sorry, everything turned out simply, I'm very inattentive ...
Oct 17 2014
On 2014-10-17 07:24, Sergey wrote:Or if I already have a byte string in cp1251 how to translate it into a normal string?Doesn't Sql Server uses UC2? -- /Jacob Carlborg
Oct 17 2014
On Friday, 17 October 2014 at 15:57:36 UTC, Jacob Carlborg wrote:On 2014-10-17 07:24, Sergey wrote:I finished two functions: utf8 -> sp1251 and sp1251 -> utf8, and it works well for me. What about the date format? I am getting from the sql server with the date field with this value: Jan 22 2007 12:00:00:000AM And it is the same on .d program and in .c program. Unfortunately, while I could not find how to change the date format in the example: DD.MM.YYYY.Or if I already have a byte string in cp1251 how to translate it into a normal string?Doesn't Sql Server uses UC2?
Oct 20 2014
On Thursday, 9 October 2014 at 17:11:57 UTC, Paulo Pinto wrote:Am 09.10.2014 um 10:24 schrieb Russel Winder via Digitalmars-d:Its protocol (and AFAIK database layout) is binary compatible to MySQL, so you usually wouldn't even notice it.-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 09/10/14 09:08, ketmar via Digitalmars-d wrote:Really? I am yet to do any project with it instead of MySQL.On Thu, 09 Oct 2014 07:58:24 +0000 Sergey via Digitalmars-d <digitalmars-d puremagic.com> wrote:And most people are now using MariaDB!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.
Oct 09 2014
On Thursday, 9 October 2014 at 07:25:21 UTC, Sergey wrote: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.
Oct 09 2014
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).
Oct 09 2014