mysql:162
From: Kengo Jinno <Kengo Jinno <kengo@xxxxxxxxxx>>
Date: Wed, 27 May 1998 21:59:50 +0900
Subject: [mysql 162] Re: MyODBC でトラブル
神野です。 Wed, 27 May 1998 21:20:49 +0900 ごろに <356C0521285.5105TAMON@xxxxxxxxxx> の "[mysql 161] Re[2]: MyODBC でトラブル" のメールで Tamon Nomura <tamon@xxxxxxxxxx> さんは書きました。 > ばっちり出来ました。変更したソースなんかみせていただけるとうれしいです。 まず、mysql-3.21.30のSJIS用のマクロをdefineしてしまってます。 本来ならm_ctype.hあたりでdefineすべきなんでしょうが、こいつをincludeして ないファイルもあるのでmyodbc.hでもいいんじゃないでしょうか。 #ifdef USE_MB #define issjishead(c) ((0x81<=(uchar)(c) && (uchar)(c)<=0x9f) || (0xe0<=(uchar)(c) && (uchar)(c)<=0xfc)) #define issjistail(c) ((0x40<=(uchar)(c) && (uchar)(c)<=0x7e) || (0x80<=(uchar)(c) && (uchar)(c)<=0xfc)) #endif で、このマクロを利用して、SJIS判定してます。 [utility.c] void remove_escape(char *name) { char *to; for (to=name ; *name ; name++) { #ifdef USE_MB if( issjishead( name[0] ) && issjistail( name[1] ) ) { *to++ = *name++; *to++ = *name; continue; } #endif if (*name == '\\' && name[1]) name++; *to++= *name; } *to=0; } [prepare.c] RETCODE my_SQLPrepare(HSTMT hstmt,UCHAR FAR *szSqlStr, SDWORD cbSqlStr) { STMT FAR *stmt=(STMT FAR*) hstmt; char in_string,*pos; uint param_count; DBUG_ENTER("my_SQLPrepare"); (中略) for (pos=stmt->query; *pos ; pos++) { #ifdef USE_MB if( issjishead( pos[0] ) && issjistail( pos[1] ) ) { pos += 2-1; continue; } #endif if (*pos == '\\' && pos[1]) /* Next char is escaped */ { pos++; continue; } [execute.c] static char *insert_param(NET *net,char *to,PARAM_BIND *param) { uint length; char buff[128],*data; bool convert=0; (ずずっと中略) switch (param->SqlType) { case SQL_CHAR: case SQL_VARCHAR: case SQL_LONGVARCHAR: { char *data_end=data+length; char *to_end=net->buff+net->max_packet-3; *to++='\''; while (data != data_end) { if (to >= to_end) { if (!(to=extend_buffer(net,to,(data_end-data)+256))) return 0; to_end=net->buff+net->max_packet-3; } /* Escape \0, \r and \n for better logging */ #ifdef USE_MB if( issjishead( data[0] ) && issjistail( data[1] ) ) { *to++ = *data++; *to++ = *data++; continue; } #endif if (*data == 0) { data++; *to++= '\\'; *to++= '0'; } てな感じです。 > ところで、MyODBC 2.50.16bを使っていらっしゃるようですが > DATEのカラムがおかしくなりませんか? そこまで見てないです。ごめんなさい。Access97は他の者がつついてますんで。 ----------------------------- 神野健吾 <kengo@xxxxxxxxxx>
159 1998-05-27 13:36 ["Toshiyuki Fujii" <f] MyODBCでトラブル 160 1998-05-27 14:16 ┗[Kengo Jinno <kengo@x] 161 1998-05-27 21:20 ┣[Tamon Nomura <tamon@] Re[2]: MyODBC でトラブル -> 162 1998-05-27 21:59 ┃┗[Kengo Jinno <kengo@x] Re: MyODBC でトラブル 163 1998-05-27 22:50 ┃ ┗[Tamon Nomura <tamon@] 164 1998-05-27 23:15 ┃ ┗[<takeshi@xxxxxxxxxx>] 166 1998-05-28 01:40 ┗[Hiroshi Marui <bant@] 169 1998-05-28 15:16 ┗[Kengo Jinno <kengo@x] SJIS<-->UJIS on MyODBC ( Re: MyODBCでトラブル ) 172 1998-05-28 15:54 ┣["民斗 " <tommy@xxxxx] 175 1998-05-29 01:32 ┗[Hiroshi Marui <bant@]