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