我试图使用存储过程在Server 2008 R2表中插入记录。我正在“尝试”编写一个用于数据库访问的泛型类。
下面是.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]
去
将ANSI_NULLS设置为
去
将QUOTED_IDENTIFIER设置为
去
变更过程dbo.sp_InsertExpert
@Name nvarchar(30) = null,
@Qualification nvarchar(40) = null,
@ContactNo nvarchar(13) = null,
@Expertise nvarchar(30) = null,
@Comments nvarchar(100) = null,
@Affiliation nvarchar(50) = null AS
开始
SET NOCOUNT ON;
INSERT INTO Expert (Name, Qualification, ContactNo, Expertise, Comments, Affiliation) VALUES (@Name, @Qualification, @ContactNo, @Expertise, @Comments, @Affiliation)
结束
表的结构如下:
请给我改正一下。
更新
我已设置ID列的标识规范=‘是’,标识增量= 1,索引实体种子=1
发布于 2012-10-15 10:54:57
您没有出现异常的行号吗?
通过查看您的代码:
ExecuteNonQuery
按照http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx返回一个INT
我建议不要将输出转换为字节,而是将cmd.ExecuteNonQuery()与值(如> 0
)进行比较
对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数。当正在插入或更新的表上存在触发器时,返回值包括受insert或update操作影响的行数和受触发器影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,则返回值也是-1。
https://stackoverflow.com/questions/12899811
复制相似问题