问题设置参数值等于DataColumn值

时间:2011-04-23 18:19:54

标签: vb.net stored-procedures parameters datatable

VB.Net中的编码

大家好我有这个问题,我试图为存储过程分配一些参数,其中一些值存储在数据表中。在代码中,我可以将参数值设置为数据表,并给出列标题或索引没有问题,但是当它尝试在运行时执行时它就会爆炸。

我得到的错误是“无法将参数值从DataColumn转换为字符串”的变体,具体取决于我尝试分配值的方式。

数据类型在代码的其他地方都是正确的,所以我很确定这不是问题,我想我只是错误的方式。

这个位的代码是


Try
ConnectionAttempt.Open()
Try
    With NewYearCommand_Dates
        .CommandType = CommandType.StoredProcedure
        .CommandText = "DatesINSERT"
        .Parameters.Add(New SqlParameter("@AcademicYear", SqlDbType.VarChar))
        .Parameters.Add(New SqlParameter("@YearStart", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@YearEnd", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term1Start", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term1End", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term2Start", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term2End", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term3Start", SqlDbType.Date))
        .Parameters.Add(New SqlParameter("@Term3End", SqlDbType.Date))
        .Parameters("@AcademicYear").Value = dates.Columns("AcademicYear")
        .Parameters("@YearStart").Value = dates.Columns("YearStart")
        .Parameters("@YearEnd").Value = dates.Columns("YearEnd")
        .Parameters("@Term1Start").Value = dates.Columns("Term1Start")
        .Parameters("@Term1End").Value = dates.Columns("Term1End")
        .Parameters("@Term2Start").Value = dates.Columns("Term2Start")
        .Parameters("@Term2End").Value = dates.Columns("Term2End")
        .Parameters("@Term3Start").Value = dates.Columns("Term3Start")
        .Parameters("@Term3End").Value = dates.Columns("Term3End")
        .Connection = ConnectionAttempt
        .ExecuteNonQuery()
        .Dispose()
    End With
Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try

我试图让其工作的其他事情是.Value = dates位的所有变体,例如

.Value = dates(0)(所以使用列索引)

.Value = dates.columns(0)(再次使用列索引)

我还尝试声明变量,并将其值设置为列中的值,但代码返回错误,指出“类型'System.Data.DataColumn'的值不能转换为字符串”。

我应该指出,我在这个子目录中同时为3个表做这个,其中2个只有一行数据,但第三行有不确定的行数。

我害怕我不知道还能做什么。我会让我的配偶和讲师相信这应该有用,当然它会起作用,但证据不然。

如果我以完全错误的方式解决这个问题,有人可以告诉我我应该做什么吗?

欢呼声

1 个答案:

答案 0 :(得分:1)

此:

dates.Columns("AcademicYear")

整个列。您只能从一个中分配值。

例如,要使用DataTable的第一行:

.Parameters("@AcademicYear").Value = dates.Rows[0]("AcademicYear")