Tedious: рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рд▓реЙрдЧ рдЗрди рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ -- рддреНрд░реБрдЯрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЬрдире░ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: tediousjs/tedious

рд╕рдмрдХреЛ рдирдорд╕реНрддреЗ,

рдореБрдЭреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрд╣ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХрд▓ рд╕реЗ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХреА рдХреНрдпреЛрдВред

[рдЕрдиреБрд░реЛрдз рддреНрд░реБрдЯрд┐: рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рд▓реЙрдЧ рдЗрди рд░рд╛рдЬреНрдп рдореЗрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ]

connection.on('connect', function(err) {
        Console.log("-------here------");
    if(err) {
        return console.error(err); // <--
        connected = false;
    } else {
        connected = true;
    }
});

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред рд╡рд╣ рдХреБрдЫ рднреА рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬреБрдбрд╝рд╛ рд╣рдореЗрд╢рд╛ рдЭреВрдард╛ рд╣реЛрддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж !!

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдЗрд╕ рд╕рдм рдкрд░ рдПрдХ рдирдпрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрдиреЗрдХреНрд╢рди рдбреАрдмрдЧ рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдореБрдЭреЗ рдЗрд╕ рд╕рдЯреАрдХ рддреНрд░реБрдЯрд┐ рдореЗрдВ рдорджрдж рдХреАред рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░рд╛ рдХрдиреЗрдХреНрд╢рди sql рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред
connection.on('debug', function(err) { console.log('debug:', err);});

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдПрдХ рдРрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

C:\Users\Austin\Desktop\prok>node prok.js
{ [RequestError: Requests can only be made in the LoggedIn state, not the Connecting state
]
  message: 'Requests can only be made in the LoggedIn state, not the Connecting state',
  code: 'EINVALIDSTATE' }
buffer.js:506
    throw new RangeError('index out of range');
          ^
RangeError: index out of range
    at checkOffset (buffer.js:506:11)
    at Buffer.readUInt8 (buffer.js:544:5)
    at Packet.isLast (C:\Users\Austin\Desktop\prok\node_modules\tedious\lib\packet.js:121:
29)
    at ReadablePacketStream.<anonymous> (C:\Users\Austin\Desktop\prok\node_modules\tedious
\lib\message-io.js:102:18)
    at ReadablePacketStream.emit (events.js:107:17)
    at readableAddChunk (C:\Users\Austin\Desktop\prok\node_modules\tedious\node_modules\re
adable-stream\lib\_stream_readable.js:201:16)
    at ReadablePacketStream.Readable.push (C:\Users\Austin\Desktop\prok\node_modules\tedio
us\node_modules\readable-stream\lib\_stream_readable.js:165:10)
    at ReadablePacketStream.Transform.push (C:\Users\Austin\Desktop\prok\node_modules\tedi
ous\node_modules\readable-stream\lib\_stream_transform.js:133:32)
    at ReadablePacketStream._transform (C:\Users\Austin\Desktop\prok\node_modules\tedious\
lib\message-io.js:68:16)
    at ReadablePacketStream.Transform._read (C:\Users\Austin\Desktop\prok\node_modules\ted
ious\node_modules\readable-stream\lib\_stream_transform.js:172:10)

рдореИрдВ рдпрд╣рд╛рдВ рд╕рдЯреАрдХ рдХреЛрдб рдлреЙрд░реНрдо рдХрд╛ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-nodejs-simple-linux/

--prok.js--

var Connection = require('tedious').Connection;
var config = {
    userName: 'tester',
    password: 'tester',
    server: 'localhost',
    options: {
        port:3306
    }
};
var connection = new Connection(config);
connection.on('connect', function(err) {
// If no error, then good to proceed.
    console.log("Connected");
});
var Request = require('tedious').Request;
var TYPES = require('tedious').TYPES;
function executeStatement() {
    request = new Request("SELECT * FROM testdb.testtable;", function(err) {
    if (err) {
        console.log(err);}
    });
    var result = "";
    request.on('row', function(columns) {
        console.log('row');
        columns.forEach(function(column) {
          if (column.value === null) {
            console.log('NULL');
          } else {
            result+= column.value + " ";
          }
        });
        console.log(result);
        result ="";
    });
    request.on('done', function(rowCount, more) {
    console.log(rowCount + ' rows returned');
    });
    connection.execSql(request);
}

executeStatement();

@yossazo рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ рдердХрд╛рдК рдЕрдм рдбреАрдмреА рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред

@austincap рдЖрдк рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ Requests can only be made in the LoggedIn state, not the Connecting state рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

рдореИрдВ рдЗрд╕ рд╕рдм рдкрд░ рдПрдХ рдирдпрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрдиреЗрдХреНрд╢рди рдбреАрдмрдЧ рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдореБрдЭреЗ рдЗрд╕ рд╕рдЯреАрдХ рддреНрд░реБрдЯрд┐ рдореЗрдВ рдорджрдж рдХреАред рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░рд╛ рдХрдиреЗрдХреНрд╢рди sql рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред
connection.on('debug', function(err) { console.log('debug:', err);});

рд╡рд░ рдХрдиреЗрдХреНрд╢рди = рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ('рдердХрд╛рдК')ред рдХрдиреЗрдХреНрд╢рди;
рд╡рд░ рдЕрдиреБрд░реЛрдз = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдердХрд╛рдК')ред рдЕрдиреБрд░реЛрдз;
рд╡рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("рдПрдХреНрд╕рдкреНрд░реЗрд╕");
var bodyParser = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("рдмреЙрдбреА-рдкрд╛рд░реНрд╕рд░");
рд╡рд░ рдРрдк = рдПрдХреНрд╕рдкреНрд░реЗрд╕ ();

// рдмреЙрдбреА рдкрд╛рд░реНрд╕рд░ рдорд┐рдбрд▓рд╡реЗрдпрд░
app.use (bodyParser.json ());

// рд╕рд░реНрд╡рд░ рд╕реЗрдЯ рдХрд░рдирд╛
рд╡рд░ рд╕рд░реНрд╡рд░ = app.listen (process.env.PORT || 8081, рд╕рдорд╛рд░реЛрд╣ () {
рд╡рд░ рдкреЛрд░реНрдЯ = рд╕рд░реНрд╡рд░ред рдкрддрд╛ ()ред рдкреЛрд░реНрдЯ;
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ("рдЕрдм рдРрдк рдкреЛрд░реНрдЯ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ", рдкреЛрд░реНрдЯ);
});

// рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдПрдВ
рд╡рд░ рд╡рд┐рдиреНрдпрд╛рд╕ = {
рдкреНрд░рдорд╛рдгреАрдХрд░рдг: {
рд╡рд┐рдХрд▓реНрдк: {
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо: 'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо', // рдореБрдЭреЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
рдкрд╛рд╕рд╡рд░реНрдб: 'рдкрд╛рд╕рд╡рд░реНрдб' // рдореБрдЭреЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
},
рдЯрд╛рдЗрдк рдХрд░реЗрдВ: 'рдбрд┐рдлрд╝реЙрд▓реНрдЯ'
},
рд╕рд░реНрд╡рд░: 'servername.database.windows.net', // рдореБрдЭреЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
рд╡рд┐рдХрд▓реНрдк: {
рдбреЗрдЯрд╛рдмреЗрд╕: 'рд╡рд┐рдХрд╛рд╕', // рдореБрдЭреЗ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ: рд╕рдЪ // рдорд╣рддреНрд╡рдкреВрд░реНрдг
}
}
// Azure рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдПрдВ
рд╡рд░ рдХрдиреЗрдХреНрд╢рди = рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди);
// рдПрдХ рдЬреЗрд╕рди рд╕рд░рдгреА рдмрдирд╛рдПрдВ
рд╡рд░ рдбреЗрдЯрд╛ = []
рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ (рдХреНрд╡реЗрд░реА, рд░реЗрд╕) {
рд╡рд░ рдЕрдиреБрд░реЛрдз = рдирдпрд╛ рдЕрдиреБрд░реЛрдз (рдХреНрд╡реЗрд░реА, рдлрд╝рдВрдХреНрд╢рди (рдЧрд▓рддреА, рдкрдВрдХреНрддрд┐ рдЧрдгрдирд╛, рдкрдВрдХреНрддрд┐рдпрд╛рдБ) {
рдЕрдЧрд░ (рдЧрд▓рддреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдЧрд▓рддреА);
} рдЕрдиреНрдпрдерд╛ {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдкрдВрдХреНрддрд┐ рдЧрдгрдирд╛ + 'рдкрдВрдХреНрддрд┐рдпрд╛рдБ');
res.send ({рд╕реНрдерд┐рддрд┐: 200, рдбреЗрдЯрд╛: рдбреЗрдЯрд╛, рд╕рдВрджреЗрд╢: "рдареАрдХ рд╣реИ"})
}
});

//connection.on('debug', function(err) { console.log('debug:', err);}); if the connection is not working

request.on('row', function (row) {
  data.push({
      ID: row[0].value,
      ProductName: row[1].value,
      Price: row[2].value,
      ProductDescription: row[3].value,
      CreatedDate: row[4].value,
      Username: row[5].value
  })

});
рдХрдиреЗрдХреНрд╢рди.execSql (рдЕрдиреБрд░реЛрдз);
}

app.get('/api/products', function (req, res) {
рд╡рд░ рдХреНрд╡реЗрд░реА = ('рдЙрддреНрдкрд╛рджреЛрдВ рд╕реЗ рдЪрдпрди рдХрд░реЗрдВ');
рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ (рдХреНрд╡реЗрд░реА, рд░реЗрд╕);
});

// рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдореЗрд░рд╛ рдбреАрдмреА рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рдЦ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рддреЗ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрд╛

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

anthonylau picture anthonylau  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gladmustang picture gladmustang  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

c5soft picture c5soft  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yianni-ververis picture yianni-ververis  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

diginfo picture diginfo  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ