MS ODBC encoding issue

Regan Heath regan at netmail.co.nz
Mon Dec 31 03:01:16 PST 2012


On Mon, 24 Dec 2012 07:18:51 -0000, Sam Hu <samhudotsamhu at gmail.com> wrote:

> On Friday, 21 December 2012 at 15:20:39 UTC, Regan Heath wrote:
>> On Wed, 19 Dec 2012 06:33:16 -0000, Sam Hu <samhudotsamhu at gmail.com>  
>> wrote:
>>
>>> On Monday, 10 December 2012 at 14:43:08 UTC, Regan Heath wrote:
>>>> >
>>>> Ahh, of course.  Now I'm having linking issues :p
>>>>
>>>> I'm using VisualD and I've added odbc32.lib to the right place, but  
>>>> some symbols are still missing - specifically the W versions.  I've  
>>>> dumped the symbols in the DMC odbc32.lib and it's missing those  
>>>> symbols.
>>>>>
>>>> R
>>>
>>> I have such extra lib files to link successfully but I don't find any  
>>> way to upload here.Sorry.
>>
>> NP, I am up and running.  I can run the test app and see my existing  
>> rows, plus insert new ones.  I got it working with a connection string  
>> directly to an access database file on disk without needing a DSN, not  
>> sure why you were having trouble with that.
>>
>> So, what sort of data do I need to add, which will cause the issues you  
>> were originally having :)
>>
>> R
>
> Really excited to hear that! As I said,field contains Chinese characters  
> will produce error during read from and write back to database file;

Can you save some of these characters in a text file, as UTF-8, and zip  
that and upload/attach it here for me to try.  I want to make sure I'm  
testing the exact same data as you are.

I suspect the issue you're having is related to the encoding of the  
strings.  D expects/uses UTF-8, but the database will be configured with a  
specific locale/encoding for the columns in question.

So, can you export/describe your database table to me, columns, and  
locales/encodings etc so I can compare them to mine.

> and can't work out a DSNless connection function.
>
> Would be much appreciated if you would like to share your complete code  
> here.

At present I'm simply using your code, with only very minor changes to the  
odbcutiltest.d file, like the connection string for example:

odbc.connect(r"Driver={Microsoft Access Driver (*.mdb,  
*.accdb)};Dbq=C:\Development\D\src\odbcutiltest\test.accdb;");

And the table name "artists" (IIRC) plus I have 3 columns, so..

     write("Please enter artist ID:");
     string id=chomp(readln);
     write("Please enter artist Name:");
     string name=chomp(readln);
     write("Please enter artist Age:");
     string age=chomp(readln);

     string sql="insert into artists values("~id~",'"~name~"',"~age~");";
     int changed=odbc.executeNonQuery(sql);
     writefln("%d row affected.",changed);

R

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d-learn mailing list