【发布时间】:2015-09-25 01:11:08
【问题描述】:
我设置了一个文本字段和按钮来修剪 youtube 链接的末尾并将其保存到 SQL Server 表中。但我的存储过程实际上并没有保存任何东西。
HTML
<asp:TextBox ID="txtYoutubeLink" runat="server" AutoPostBack="true" Width="300"></asp:TextBox>
<asp:Button ID="btnSave" runat="server" Text="Save Link" Width="120" />
VB.Net
Protected Sub btnSave_Click(sender As Object, e As System.EventArgs) Handles btnSave.Click
If txtYoutubeLink.Text = "" Then
Else
Dim link As String = txtYoutubeLink.Text
Dim shortlink As String = link.Substring(link.LastIndexOf("=") + 1)
SqlHelper.ExecuteNonQuery(System.Configuration.ConfigurationManager.AppSettings("dbConn"), "X_WW_spSaveVideoUrl", lstStockItems.SelectedItem.Value.ToString(), shortlink)
End If
End Sub
存储过程:
ALTER PROCEDURE [dbo].[X_WW_spSaveVideoUrl]
@STOCKCODE VARCHAR(15),
@VideoURL VARCHAR(max)
AS
UPDATE Stock_Items
SET X_VIDEOURL = @VideoURL
WHERE StockCode = @STOCKCODE
lstStockItems 是由另一个存储过程设置的 ASP:Datalist,值字段已正确设置为产品库存代码。它在几页上都在使用,所以我知道这不是它失败的地方,但我不明白为什么新程序不起作用。我唯一能想到的是这被用来覆盖现有表中的null 字段,所以也许我的更新查询是错误的?
编辑
这是另一个文本框/按钮组合,我用它来更改已经列出针对它们的产品的 youtube 链接。
Protected Sub btnUpdate_Click(sender As Object, e As System.EventArgs) Handles btnUpdate.Click
If txtChangeYoutubeLink.Text = "" Then
Else
Dim link As String = txtChangeYoutubeLink.Text
Dim shortlink As String = link.Substring(link.LastIndexOf("=") + 1)
SqlHelper.ExecuteNonQuery(System.Configuration.ConfigurationManager.AppSettings("dbConn"), "X_WW_spSaveVideoUrl", lstLinked.SelectedItem.Value.ToString(), shortlink)
End If
End Sub
工作正常。因此,我可以使用该过程将 X_VideoUrl 字段从“blah”更改为“bleh”,但不能将其从 NULL 更改为“bleh”。
【问题讨论】:
-
你调试过你的代码吗?您是否尝试查看 shortlink 和 lstStockItems.SelectedItem.Value.ToString() 中存储的值以及您传递的值?可能是您以错误的顺序传递值。
-
Youtube 链接 youtube.com/watch?v=Q03nIupGAIQ 正确缩短为 Q03nIupGAIQ,但未发送到 SQL 表。我还仔细检查了它是否获得了正确的列表项值。
-
显示此方法/签名..
SqlHelper.ExecuteNonQuery(System.Configuration.ConfigurationManager.AppSettings("dbConn"), "X_WW_spSaveVideoUrl", lstStockItems.SelectedItem.Value.ToString(), shortlink).我几乎可以这样,因为你传递的参数通常不是这样做的方法,除非你创建了这个方法......而且那些不是 sql 参数,我不知道你甚至会编译它。 -
@Codexer 在我得到这份工作之前,它已经存在于网站的 Webconfig 中。它用于对 SQL 服务器的任何调用。 tp
("dbConn")上的所有内容仅访问正确的服务器,"X_WW_spSaveVideoUrl"是存储过程的名称,然后是 SQL 中声明顺序的过程参数,它在整个站点中至少使用了 150 次,并且有人谁比我知道的更多,所以这不应该是问题。 -
您必须将参数发送给 sql 实例,而不仅仅是字符串
标签: sql-server vb.net stored-procedures