我想使用存儲過程在SQL Server 2008 R2表中插入一條記錄。我正在「試圖」爲數據庫訪問編寫一個通用類。ASP.NET,SQL Server 2008 R2,System.OverflowException
下面是.VB文件中的代碼:
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If PreviousPage IsNot Nothing AndAlso PreviousPage.IsCrossPagePostBack Then
Dim params(5) As SqlParameter
params(0) = New SqlParameter("@Name", PreviousPage.Name.Text)
params(1) = New SqlParameter("@Qualification", PreviousPage.Qualification.Text)
params(2) = New SqlParameter("@ContactNo", PreviousPage.ContactNo.Text)
params(3) = New SqlParameter("@Expertise", PreviousPage.Expertise.Text)
params(4) = New SqlParameter("@Comments", PreviousPage.Comments.Text)
params(5) = New SqlParameter("@Affiliation", PreviousPage.Affiliation.Text)
DAL.DoInsertSP(params)
End If
End Sub
下面是DAL.DoInsertSP()的代碼:
Public Shared Function DoInsertSP(ByRef params As Array) As Byte
Dim result As Byte = 0
CreateConnection()
cmd = New SqlCommand("sp_InsertExpert", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddRange(params)
Try
result = CByte(cmd.ExecuteNonQuery())
Catch ex As Exception
conn.Dispose()
End Try
Return result
End Function
的代碼拋出System.OverflowException:算術運算導致溢出。
這裏的PROC腳本sp_InsertExpert
USE [dbherpes]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [DBO]。[sp_InsertExpert]
@Name nvarchar(30)= null,
@Qualification爲nvarchar(40)=零,
@ContactNo爲nvarchar(13)=零,
@Expertise爲nvarchar(30)=零,
@Comments爲nvarchar(100)=零,
@Affiliation爲nvarchar(50 )= null AS
BEGIN
SET NOCOUNT ON;
INSERT INTO專家(名稱,資質,ContactNo,專業知識,評論,所屬)VALUES(@Name,@Qualification,@ContactNo,@Expertise,@Comments,@Affiliation)
END
這裏的結構表:
我怎樣才能解決這個嗎?
UPDATE
我已經設置ID列的標識規格=「是」,標識增量= 1,恆等式種子= 1
你的'ID'不應該是int嗎? –
將.NET全部切割出來,並使用相同的數據從SQL Managment Studio運行sp_InsertExpert,您會得到什麼? –