cretz / node-tds

Pure JS implementation of TDS protocol for Microsoft SQL Server
http://cretz.github.com/node-tds
MIT License
104 stars 23 forks source link

nvarchar field error #11

Open jiangjianxiao opened 12 years ago

jiangjianxiao commented 12 years ago
create table test (id int identity,name nvarchar(50) null);

go

declare @i int 

set @i=0

while @i<2000  begin

    insert into test default values;
    set @i=@i+1
end

var stmt=conn.createStatement('select id,name from test order by id');
        stmt.on('row',function(row){
            console.log(row);
            console.log(row.getValue('id'),row.getValue('name'));

        });
        stmt.execute();

{ type: 209,
  name: 'ROW',
  handlerFunction: 'row',
  metadata:
   { type: 129,
     name: 'COLMETADATA',
     handlerFunction: 'colmetadata',
     columns: [ [Object], [Object] ],
     columnsByName: { id: [Object], name: [Object] } },
  values: [ { length: 4, buffer: <Buffer 42 02 00 00> }, { length: -1 } ] }
578 null
{ type: 209,
  name: 'ROW',
  handlerFunction: 'row',
  metadata:
   { type: 129,
     name: 'COLMETADATA',
     handlerFunction: 'colmetadata',
     columns: [ [Object], [Object] ],
     columnsByName: { id: [Object], name: [Object] } },
  values:
   [ { length: 4, buffer: <Buffer 43 02 04 00> },
     { length: 16,
       buffer: <Buffer 00 38 02 00 00 00 ff ff d1 44 02 00 00 ff ff d1> } ] }
262723 '㠀\u0002\u0000￿䓑\u0002＀퇿'

C:\Users\jjx\AppData\Roaming\npm\node_modules\tds\lib\tds-client.js:210
          throw err;
                ^
Error: Unrecognized type: 69
    at TokenStreamPacket._getTokenFromType (C:\Users\jjx\AppData\Roaming\npm\nod
e_modules\tds\lib\tokenstream.packet.js:67:15)
    at TokenStreamPacket.nextToken (C:\Users\jjx\AppData\Roaming\npm\node_module
s\tds\lib\tokenstream.packet.js:75:18)
    at TdsClient._handleToken (C:\Users\jjx\AppData\Roaming\npm\node_modules\tds
\lib\tds-client.js:197:35)
    at TdsClient.<anonymous> (C:\Users\jjx\AppData\Roaming\npm\node_modules\tds\
lib\tds-client.js:167:19)
    at Socket.<anonymous> (C:\Users\jjx\AppData\Roaming\npm\node_modules\tds\lib
\tds-client.js:2:59)
    at Socket.emit (events.js:67:17)
    at TCP.onread (net.js:347:14)

i use sql server workgroup edition version 8.00.2039(sp4) server collation chinese_prc_ci_as node 0.6.8

baoshan commented 12 years ago

I'm unfamiliar with the TDS spec, but from the above phenomenon, I guess it's due to the same problem as I pointed out in https://github.com/cretz/node-tds/issues/8.

Maybe nothing to do with nvarchar data type. Since the id column was corrupted already.

jiangjianxiao commented 12 years ago

You may be right

use select id from test


1632
{ type: 209,
  name: 'ROW',
  handlerFunction: 'row',
  metadata:
   { type: 129,
     name: 'COLMETADATA',
     handlerFunction: 'colmetadata',
     columns: [ [Object] ],
     columnsByName: { id: [Object] } },
  values: [ { length: 4, buffer: <Buffer 61 06 04 01> } ] }
17040993

C:\Users\jjx\AppData\Roaming\npm\node_modules\tds\lib\tds-client.js:210
          throw err;
                ^
Error: Unrecognized type: 7
    at TokenStreamPacket._getTokenFromType (C:\Users\jjx\AppData\Roaming\npm\nod
e_modules\tds\lib\tokenstream.packet.js:67:15)
    at TokenStreamPacket.nextToken (C:\Users\jjx\AppData\Roaming\npm\node_module
s\tds\lib\tokenstream.packet.js:75:18)
    at TdsClient._handleToken (C:\Users\jjx\AppData\Roaming\npm\node_modules\tds
\lib\tds-client.js:197:35)
    at TdsClient._handlePacket (C:\Users\jjx\AppData\Roaming\npm\node_modules\td
s\lib\tds-client.js:270:19)
    at TdsClient.<anonymous> (C:\Users\jjx\AppData\Roaming\npm\node_modules\tds\
lib\tds-client.js:169:19)
    at Socket.<anonymous> (C:\Users\jjx\AppData\Roaming\npm\node_modules\tds\lib
\tds-client.js:2:59)
    at Socket.emit (events.js:67:17)
    at TCP.onread (net.js:347:14)