安装库
链接sql server
bash
npm i mssql
封装请求函数
query_sql.js
javascript
const sql = require('mssql')
const pool = new sql.ConnectionPool({
user: 'aa',
password: '*******',
server: '127.0.0.1',
database: 'BB',
port: 1433,
options: {
encrypt: false
},
pool: {
min: 0,
max: 10,
idleTimeoutMillis: 10000
}
})
const querySql = (sql) => {
return new Promise(async (resolve, reject) => {
try {
await pool.connect()
const result = await pool.request().query(sql)
resolve(result.recordset)
} catch (err) {
reject(err)
} finally {
pool.close()
}
})
}
module.exports = querySql
动态创建方法
create_sql_table.js
javascript
const querySql = require('./query_sql')
const createTable = (table_name, field_list) => {
// 输入校验
if (typeof table_name !== 'string' || table_name.trim() === '') {
throw new Error('Invalid table name: must be a non-empty string')
}
if (!Array.isArray(field_list)) {
throw new Error('Invalid field list: must be an array')
}
// 校验并生成字段定义
if (field_list.length === 0) {
throw new Error('Field list cannot be empty')
}
const field_list_column = field_list
.map((item) => {
return `${item.name} ${item.type ? item.type : 'VARCHAR(255)'}${item.is_key ? ' PRIMARY KEY' : ''} ${item.nullable ? 'NOT NULL' : ''}`
})
.join(', ')
const field_list_text = field_list
.map((item) => {
return `
EXEC sp_addextendedproperty
@name = N'MS_Description', @value = N'${item.text}',
@level0type = N'SCHEMA', @level0name = 'dbo',
@level1type = N'TABLE', @level1name = '${table_name}',
@level2type = N'COLUMN', @level2name = '${item.name}';
`
})
.join('\n')
return `
IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[dbo].[${table_name}]') AND type in (N'U'))
BEGIN
CREATE TABLE ${table_name} (
${field_list_column}
)
END
${field_list_text}
`
}
const createdYSsubcontractorder = async () => {
const table_name = 'test_table'
const table_list = [
{ name: 'id', text: '唯一值', is_key: true },
{ name: 'state', text: '状态:0-已审批,1-驳回' },
{ name: 'editDate', text: '修改日期' },
{ name: 'createTime', text: '创建时间' }
]
try {
const sql = createTable(table_name, table_list)
console.log(sql)
await querySql(sql)
console.log('表和注释已成功创建')
} catch (err) {
console.error('操作失败:', err)
}
}
createdYSsubcontractorder()