是啊,這是一個非常簡單的話題,但我的表單只是沒有在數據庫中更新該行:編輯SQL數據
這裏是我的代碼:
Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
If Request.QueryString("a") = "edit" Then
Dim CategoryText As String = lstCategory.SelectedItem.Text
Dim conn As New SqlConnection("Data Source=.\SQLEXPRESS; Initial Catalog=LogansArchive; Integrated Security=True;")
Dim cmd As New SqlCommand("UpdateArticle", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@ArticleID", Request.QueryString("i"))
cmd.Parameters.AddWithValue("@Category", CategoryText)
cmd.Parameters.AddWithValue("@ArticleTitle", txtNewTitle.Text)
cmd.Parameters.AddWithValue("@ArticleContent", txtContent.Text)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
Else
Dim CategoryText As String = lstCategory.SelectedItem.Text
Dim conn As New SqlConnection("Data Source=.\SQLEXPRESS; Initial Catalog=LogansArchive; Integrated Security=True;")
Dim cmd As New SqlCommand("AddArticle", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@Category", CategoryText)
cmd.Parameters.AddWithValue("@Date", Now)
cmd.Parameters.AddWithValue("@ArticleTitle", txtNewTitle.Text)
cmd.Parameters.AddWithValue("@ArticleContent", txtContent.Text)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
End If
End Sub
下面是指碼的SP到:
ALTER PROCEDURE [dbo].[UpdateArticle]
-- Add the parameters for the stored procedure here
@ArticleID int,
@Category varchar(20),
@ArticleTitle varchar(100),
@ArticleContent text
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
UPDATE Articles
SET
Articles.Category = (SELECT CategoryID FROM Categories WHERE CategoryName = @Category),
Articles.ArticleTitle = @ArticleTitle,
Articles.ArticleContent = @ArticleContent
WHERE Articles.ArticleID = @ArticleID
END
我從來沒有在SQL中使用嵌套的SELECT之前,所以我不知道如果我做對了。 除此之外,這是我以前所做的所有事情,所以我相對確定它是完全正確的。
最後,我調試時沒有報告錯誤,儘管更新似乎沒有通過文本字段(txtContent.Text不會改變以反映新值)。
在此先感謝您的幫助。
編輯1: 感謝您的更新,我看了CInt(Request.Querystring("i"))
問題,並沒有解決問題。我在該過程的開始處設置了一個斷點,並在txtContent.Text
上懸停以檢查它在智能感知中的Text屬性的值。請記住,調試器仍然在過程的第一行。調試器在此處顯示的txtContent.Text
屬性不包含我在測試時所做的更改。
對我來說看起來合適。您是否測試過SSMS查詢分析器的程序? – Yuck
到目前爲止,我無法識別SQL的問題。我的第一本能是設置一個斷點並驗證Request.QueryString(「i」)和CategoryText是否獲取了與數據庫中某些內容相對應的值,如果尚未這樣做的話。 –
你是說MyTextbox.Text沒有顯示用戶輸入的更新文本? –