2016-11-25 129 views
0

我的問題是我不想更新列時沒有可用的值來更新它們。我知道如何做到這一點在SQL中,但想做它的Java腳本。創建動態更新SQL查詢

我有一些變量,每個變量只屬於需要存儲或更新的特定列。

Variable Names Column Names 

context.one  First 
context.two  Second 
context.three  Third 

讓我說只有在context.one和其他人是空值或空值。

我想創建動態更新sql查詢。

例如:

Update TableName 
Set "column name whose relevant variable is having value" = variable name 
Where ID = 100 

其他列不應在列集來,因爲他們各自的變量是空的。

任何建議,請! 謝謝

+0

'Java'或'Javascript'? – Weedoze

+0

javascript ... !!如果可能,否則如何可能在java – kelly

+0

爲什麼不創建一個函數與您需要的數據作爲參數? – Weedoze

回答

1

您可以創建一個函數來生成查詢。只要發送你所需要的參數:datacolumn

var context = { 
 
    "one": "Data1", 
 
    "two": "", 
 
    "three": null 
 
} 
 

 
var columns = { 
 
    "one": "First", 
 
    "two": "Second", 
 
    "three": "Third" 
 
} 
 

 
//Iterate each keys of context object 
 
Object.keys(context).forEach(function(key) { 
 
    generateUpdateQuery(context[key], columns[key]); 
 
}); 
 

 
function generateUpdateQuery(variableName, column){ 
 
    if(variableName === null || variableName === "") 
 
    return; 
 
    var query = "UPDATE table_name SET " + column + "='" + variableName + "' WHERE ID = 100;" 
 
    console.log(query); 
 
}

+0

瞭解代碼,但是如果我們在set列中找到了兩列,那麼我們將如何從第二個set語句中刪除逗號? – kelly

0

修改Weedoze的功能來回答你的問題,就是你將如何創建一個多列的更新查詢。

var context = { 
 
    "one": "Data1", 
 
    "two": "Data2", 
 
    "three": null, 
 
    "four": "Data4" 
 
} 
 

 
var columns = { 
 
    "one": "First", 
 
    "two": "Second", 
 
    "three": "Third", 
 
    "four": "Four" 
 
} 
 

 
var query = "UPDATE table_name SET "; 
 
Object.keys(context).forEach(function(key) { 
 
    if(!(context[key] === null || context[key] === "")) 
 
    query += columns[key] + "='" + context[key] + "',"; 
 
}); 
 

 
query += " WHERE ID = 100"; 
 

 
//replace last comma from query 
 
var n = query.lastIndexOf(","); 
 
query = query.slice(0, n) + query.slice(n).replace(",", ""); 
 

 
console.log(query);