Skip to content

Instantly share code, notes, and snippets.

@romgrk
Created July 27, 2017 17:16
Show Gist options
  • Select an option

  • Save romgrk/fa6eb1418a8cfaabe81efb90445ef194 to your computer and use it in GitHub Desktop.

Select an option

Save romgrk/fa6eb1418a8cfaabe81efb90445ef194 to your computer and use it in GitHub Desktop.
/*
* SQL
*/
function sqlQuery(query, connectionString) {
var adOpenDynamic = 2;
var adLockOptimistic = 3;
var rs = new ActiveXObject('ADODB.Recordset');
rs.open(query, connectionString, adOpenDynamic, adLockOptimistic);
var res = [];
while (!rs.eof) {
var record = {};
for (var i = 0; i < rs.fields.count; ++i) {
var key = rs.fields(i).name;
var value = rs.fields(i).value;
record[key] = value;
}
res.push(record);
rs.MoveNext();
}
rs.close();
return res;
}
function sqlExecute(query, connectionString) {
var adOpenForwardOnly = 0;
var adLockReadOnly = 1;
var adCmdText = 1;
var rs = new ActiveXObject('ADODB.Recordset');
rs.open(query, connectionString, adOpenForwardOnly, adLockReadOnly, adCmdText);
}
function escapeSql(val) {
return "'" + val.replace(/'/g, "''") + "'";
}
function interpolate(query, record) {
return query.replace(/\{ *(\w+)(?: *, *(\w+))?\ *}/g, function(m, key, type) {
if (!(key in record))
throw new Error('Key "' + key + '" not present in provided record: ' + JSON.stringify(record))
if (record[key] == null)
return 'NULL'
switch (type) {
case 'string': return escapeSql(record[key])
case 'number': return record[key]
//case 'date': return 'CONVERT(datetime, ' + escapeSql(record[key]) + ', 1)'
default: return record[key]
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment