{"id":44139,"library":"will-sql","title":"will-sql","description":"A SQL query builder that normalizes parameter placeholders across different database dialects (MySQL, MSSQL, Oracle, PostgreSQL, SQLite, ODBC, Informix). It wraps the KnSQL class to use a unified '?' placeholder syntax while automatically adapting to each database's native parameter style. Version 1.0.27, requires Node >=20, ships TypeScript types. Key differentiator: it allows writing queries with a single placeholder format and then executes them against multiple database backends without rewriting. Dependencies on config and will-util modules for configuration.","status":"active","version":"1.0.27","language":"javascript","source_language":"en","source_url":"https://github.com/tassun/will-sql","tags":["javascript","SQL","Database","DBConnect","DBConnections","DBAlias","DBConfig","KnSQL","typescript"],"install":[{"cmd":"npm install will-sql","lang":"bash","label":"npm"},{"cmd":"yarn add will-sql","lang":"bash","label":"yarn"},{"cmd":"pnpm add will-sql","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for DB connection configuration and utilities","package":"will-util","optional":false},{"reason":"Used to load database connection settings from config/default.json","package":"config","optional":true}],"imports":[{"note":"TypeScript/ESM import; also works with CommonJS destructuring","wrong":"const KnSQL = require('will-sql').KnSQL","symbol":"KnSQL","correct":"import { KnSQL } from 'will-sql'"},{"note":"Named export, not default.","wrong":"import KnDBConnections from 'will-sql'","symbol":"KnDBConnections","correct":"import { KnDBConnections } from 'will-sql'"},{"note":"Same as KnDBConnections.getDBConnector; both are available","wrong":"const getDBConnector = require('will-sql').getDBConnector","symbol":"getDBConnector","correct":"import { getDBConnector } from 'will-sql'"}],"quickstart":{"code":"import { KnSQL, KnDBConnections } from 'will-sql';\nimport config from 'config';\n\nasync function main() {\n  const knsql = new KnSQL();\n  knsql.append('SELECT * FROM users WHERE id = ?id AND status = ?status');\n  knsql.set('id', 123);\n  knsql.set('status', 'active');\n  const db = KnDBConnections.getDBConnector('MYSQL');\n  try {\n    const rows = await knsql.executeQuery(db);\n    console.log('Result:', rows);\n  } finally {\n    db.close();\n  }\n}\nmain().catch(console.error);","lang":"typescript","description":"Shows how to create a KnSQL query with named placeholders, set parameter values, obtain a DB connector, execute the query, and close the connection."},"warnings":[{"fix":"Upgrade Node.js to version 20 or later.","message":"Requires Node >=20; older Node versions will not run.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Install the required database driver explicitly (e.g., npm install mysql for MySQL).","message":"Certain DB drivers (mysql, odbc, oracledb, pg) may have been deprecated; check peer dependencies.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Keep will-util version in sync with will-sql requirements.","message":"Pinned dependency on will-util; if will-util has breaking changes, will-sql may break.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Always use try/finally or wrap in connection pool management.","message":"Calling db.close() after every query is manual; forgetting leads to connection leaks.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Create config/default.json with an appropriate DB alias entry.","message":"Configuration must exist in 'config' module's default.json; missing config throws an error.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'1.0.27':45 '20':48 'across':12 'adapt':36 'allow':55 'automat':35 'backend':70 'builder':7 'class':27 'config':75 'configur':82 'databas':14,39,69,85 'dbalia':88 'dbconfig':89 'dbconnect':86,87 'depend':73 'dialect':15 'differ':13 'differenti':53 'execut':65 'format':62 'informix':22 'javascript':83 'key':52 'knsql':26,90 'modul':80 'mssql':17 'multipl':68 'mysql':16 'nativ':41 'node':47 'normal':9 'odbc':21 'oracl':18 'paramet':10,42 'placehold':11,32,61 'postgresql':19 'queri':6,57 'requir':46 'rewrit':72 'ship':49 'singl':60 'sql':3,5,84 'sqlite':20 'style':43 'syntax':33 'type':51 'typescript':50,91 'unifi':31 'use':29 'util':79 'version':44 'will-sql':1 'will-util':77 'without':71 'wrap':24 'write':56","created_at":"2026-06-05T17:03:10.101434+00:00","updated_at":"2026-06-05T17:03:10.101434+00:00","problems":[{"fix":"Run: npm install will-util","cause":"Missing required dependency will-util.","error":"Error: Cannot find module 'will-util'"},{"fix":"Add a configuration object with key 'MYSQL' (or your alias) to config/default.json.","cause":"Missing or incorrect entry in config/default.json.","error":"Error: No configuration found for DB alias 'MYSQL'"},{"fix":"Use named import: import { KnSQL } from 'will-sql'","cause":"Importing KnSQL incorrectly (e.g., default import).","error":"TypeError: knsql.executeQuery is not a function"},{"fix":"Ensure the database is running and the connection URL in config/default.json is correct.","cause":"Database server is not running or incorrect URL.","error":"Error: connect ECONNREFUSED 127.0.0.1:3306"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/tassun/will-sql#readme","github":"https://github.com/tassun/will-sql","docs":null,"changelog":null,"pypi":null,"npm":"will-sql","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}