在 table 中保存空字符串
Save empty string in table
我得到一个网站,其中包含一个充满设置的表单,其中每个输入都在 MS SQL 数据库中保存一个值。
但是当我将字段设置为 '' 时,我收到以下错误消息:
"The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 3 (""): 数据类型 0x00 未知。"
我的 node.js 服务调用如下所示的存储过程:
CREATE PROCEDURE [dbo].[ckd_Configurations_Update]
@Key NVARCHAR(256),
@Value NVARCHAR(MAX)
AS
BEGIN
UPDATE [dbo].[ckd_Configurations] SET [Value]=@Value WHERE [Key]=@Key;
END
我的table:
CREATE TABLE [dbo].[ckd_Configurations]
(
[Key] NVARCHAR(256) NOT NULL PRIMARY KEY,
[Value] NVARCHAR(MAX)
)
最后是我的 node.js 设置配置的路径:
router.post('/configurations/update', function (req, res) {
var request = new sql.Request(databaseConnection);
var configuration = req.body;
request.input('Key', sql.NVarChar(256), configuration.Key);
request.input('Value', sql.NVarChar(sql.MAX), configuration.Value);
request.execute('ckd_Configurations_Update', function (error, recordsets) {
if (error) {
res.json(new apiResponse(false, error.message));
} else {
res.json(new apiResponse(true, '', recordsets[0]));
}
});
});
如果我对你的问题理解正确,你希望能够在数据库中插入空字符串吗?
ALLOW 'NULL' in Table against Value 列。这样就可以为它设置空值。在存储过程中,放置一个条件:
IF @Value = ''
BEGIN
SET @Value = NULL
END
当你想return这个值为空字符串时,你可以在SELECT语句中使用它。
Select isnull(Value, '') as Value from [ckd_Configurations]
将字段的虚拟值设置为“-1”,然后在存储过程中检查该值并将其设置为 NULL。我认为这里的问题是您的服务不接受导致问题的空字符串。在存储过程中,还可以设置
@Value NVARCHAR(MAX) = NULL
只需将 mssql 更新到 2.0。此版本已修复此问题。
我得到一个网站,其中包含一个充满设置的表单,其中每个输入都在 MS SQL 数据库中保存一个值。
但是当我将字段设置为 '' 时,我收到以下错误消息: "The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 3 (""): 数据类型 0x00 未知。"
我的 node.js 服务调用如下所示的存储过程:
CREATE PROCEDURE [dbo].[ckd_Configurations_Update]
@Key NVARCHAR(256),
@Value NVARCHAR(MAX)
AS
BEGIN
UPDATE [dbo].[ckd_Configurations] SET [Value]=@Value WHERE [Key]=@Key;
END
我的table:
CREATE TABLE [dbo].[ckd_Configurations]
(
[Key] NVARCHAR(256) NOT NULL PRIMARY KEY,
[Value] NVARCHAR(MAX)
)
最后是我的 node.js 设置配置的路径:
router.post('/configurations/update', function (req, res) {
var request = new sql.Request(databaseConnection);
var configuration = req.body;
request.input('Key', sql.NVarChar(256), configuration.Key);
request.input('Value', sql.NVarChar(sql.MAX), configuration.Value);
request.execute('ckd_Configurations_Update', function (error, recordsets) {
if (error) {
res.json(new apiResponse(false, error.message));
} else {
res.json(new apiResponse(true, '', recordsets[0]));
}
});
});
如果我对你的问题理解正确,你希望能够在数据库中插入空字符串吗?
ALLOW 'NULL' in Table against Value 列。这样就可以为它设置空值。在存储过程中,放置一个条件:
IF @Value = ''
BEGIN
SET @Value = NULL
END
当你想return这个值为空字符串时,你可以在SELECT语句中使用它。
Select isnull(Value, '') as Value from [ckd_Configurations]
将字段的虚拟值设置为“-1”,然后在存储过程中检查该值并将其设置为 NULL。我认为这里的问题是您的服务不接受导致问题的空字符串。在存储过程中,还可以设置
@Value NVARCHAR(MAX) = NULL
只需将 mssql 更新到 2.0。此版本已修复此问题。