如何使用此GUI生成有效的SQL命令?

如何使用此GUI生成有效的SQL命令?,sql,powershell,automation,Sql,Powershell,Automation,我正在尝试制作一个支持票证程序,该程序可以通过在数据库上运行UPDATE命令来更改当前票证。 GUI如下所示: 使用此GUI,支持者可以编辑所需的支持票证字段。我的问题是 支持者必须能够将文本字段留空,才能不更改该信息。 我现在得到的是: $id = $textBox1.text $supporter = $textBox2.text $description = $textBox3.text if ($radioButton1.Checked) { $status = 1 }els

我正在尝试制作一个支持票证程序,该程序可以通过在数据库上运行
UPDATE
命令来更改当前票证。 GUI如下所示:

使用此GUI,支持者可以编辑所需的支持票证字段。我的问题是 支持者必须能够将文本字段留空,才能不更改该信息。

我现在得到的是:

$id = $textBox1.text
$supporter = $textBox2.text
$description = $textBox3.text

if ($radioButton1.Checked)
{
    $status = 1
}elseif ($radioButton2.Checked)
{
    $status = 0
}else
{
    #don't change anything with status
}

$sqlcommand = "
UPDATE [tickettable]
SET supporter = $supporter, description = $description, status = $status
WHERE ID = $id
"
使用我的代码,支持者必须再次输入所有信息,即使他只是想更改描述(例如)。有没有办法生成一个自动化的SQL命令

请注意:我知道有些代码缺失,但那是因为 这个问题不重要


我认为唯一的方法是创建多个if-else语句,如果您不想花费数周的时间:请注意,我没有涵盖所有可能的组合这只是一个例子,你可以这样做。你只要把所有的箱子都盖上就行了

$id = $textBox1.text
$supporter = $textBox2.text
$description = $textBox3.text

if ($radioButton1.Checked)
{
    $status = 1
}elseif ($radioButton2.Checked)
{
    $status = 0
}else
{
    #don't change anything with the status
}
if ($supporter != "" -and $description != "" -and $status != ""){
     $setcommand = "SET supporter = $supporter, description = $description" status = $status
}
elseif ($supporter == "" -and $description != "" -and $status != ""){
     $setcommand = "SET description = $description, status = $status"
}
elseif ($supporter == "" -and $description != "" -and $status == ""){
     $setcommand = "SET description = $description"
}
elseif ($supporter == "" -and $description == "" -and $status == ""){
     Write-Host "Nothing to do"
}

$sqlcommand = "
UPDATE [tickettable]
$setcommand
WHERE ID = $id
"

也许你可以用这样的东西

$sqlcommand = "
UPDATE [tickettable]
WHEN $supporter IS NOT NULL
THEN SET supporter = $supporter
WHEN $description IS NOT NULL sdf
THEN description = $description
WHEN $status IS NOT NULL 
THEN SET status = $status
WHERE ID = $id
"

我解决了我的问题。这不是对我问题的直接回答,但它是一种不同的方法(也许更好)。 我在“ID”字段旁边创建了一个名为“load”的新按钮,它将字段的当前值写入输入字段(因为数据库中已经给出了信息)

现在,我的程序是这样运行的:

输入
ID
并单击“加载”后,程序读取数据库上的当前信息并将其写入输入字段。这样,SQL命令总是相同的(因为我们可以更新所有字段),在PowerShell端,我不需要写100条if/else语句。


我认为您必须编写3个单独的更新,使用case/if来确定要使用哪些更新。旁注:确保radiobutton的名称是您认为的名称。我想1会很接近,但你的逻辑似乎是相反的。