【发布时间】:2014-07-18 12:31:26
【问题描述】:
到目前为止,我已经在 Powershell Studio 中创建了一个表单,我想从该表单中获取用户的输入并将其放入 SQL Server 数据库中。
在大多数情况下,这可以正常工作,除非表单中的文本字段留空,否则会发生错误。即使某些字段不完整,我也需要能够插入数据,因为人们能够返回并编辑并添加到该数据,然后在数据库中更新它。
如果我将文本框留空,则会出现以下错误:
错误:使用“1”参数调用“Fill”的异常:“',' 附近的语法不正确。” testTabForm.psf (59): 错误: At Line: 59 char: 3
错误:+ $SqlAdapter.Fill($DataSet)
错误:+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
错误:+ CategoryInfo:未指定:(:) [],MethodInvocationException
错误:+FullyQualifiedErrorId:SqlException
这方面的代码如下:
$server = "server"
$database = "database"
$A = $record.Text
$B = $textB.Text
$C = $textC.Text
$insert = "INSERT INTO dbo.AMY (ColumnA, ColumnB, ColumnC) VALUES ($A,$B,$C)"
$connectionTemplate = "Data Source=$server;Integrated Security=SSPI;Initial Catalog=$database;"
$connectionString = [string]::Format($connectionTemplate, $server, $database)
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$command = New-Object System.Data.SqlClient.SqlCommand
$command.CommandText = $insert
$command.Connection = $connection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $command
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$connection.Close()
任何关于如何解决此问题的想法将不胜感激。
【问题讨论】:
-
恕我直言,您在这里缺少代码的相关部分。我的 2 美分:您需要在构建 $insert 变量之前检查空值。
-
我添加了我是如何获得这些值的,我想我不完全理解我缺少什么。我从表单中的用户输入中获取值。如果他们没有向其中一个文本字段添加内容,那么我希望数据库中的那个位置只有一个空白或空值。我尝试将变量设置为 $null 和空字符串,并且只有在文本字段中有实际数据时才更改它们,但我得到了同样的错误。
-
我看了看,意识到我真正的问题是它只接受数字。我只测试过数字,但我也需要 B 和 C 来接受字符串。在数据库中 ColumnA 是唯一指定 int 的,所以我不确定为什么其他两个不能是字符串。
标签: sql sql-server powershell