簡體   English   中英

在C#中使用觸發器時出錯

[英]Error using a trigger in c#

我在Visual 2015中使用數據庫制作了一個表,該表中的名稱分別為n1,n2和avg。 我制作了一個帶有3個文本框的插入按鈕,在其中插入我的名字,數字1和數字2,當我按下按鈕時,我要將它們保存在表格中。 如果我使用4個文本框(一個用於平均值),則可以使用,但我想使用觸發器。 所以..我創建了一個觸發器>

CREATE TRIGGER [Trigger]
ON [dbo].[Table1]
FOR DELETE, INSERT, UPDATE
AS 
BEGIN
    UPDATE Table1
    SET avg = (N1+N2)/2
END

這是我的插入字符串

 string ins = "insert into Table1 values ('"; ins += textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "')";

我得到這個錯誤。

列名或提供的值數與表定義不匹配。

我不知道該怎么辦 :(

好的,我仍然認為我們沒有所有信息,但是我會盡力而為...

錯誤消息來自插入語句,而不是觸發器。

對於您的插入,我將對其進行格式化,以便您明確說明將哪些值/列插入表中。

似乎您的平均值列是不可為空的字段,沒有默認約束。 因此,當您嘗試僅插入3個值時,它需要4,因為它必須具有4(不可為空)。 這就是它引發錯誤的原因。

我會這樣構造您的問題:

insert
into Table (Col1, Col2, Col3)
values (val1, val2, val3)

然后,添加一個默認約束[然后由觸發器更新],或者,使“平均值”列為空,以便可以再次通過觸發器進行更新。

我敢打賭,您有一個主鍵列或您沒有告訴我們的另一列。

使“主鍵”列為“自動遞增”,或者使每個列允許為空或為每個列提供默認值。

還要查找SQL Injection,因為您的插入語句容易受到攻擊。

您的語法也有問題:

string ins = "insert into Table1 values ('"; ins += textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "')";

它應該是

string ins = "insert into Table1 values ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "')";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM