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个只有一行数据,但第三行有不确定的行数。
我害怕我不知道还能做什么。我会让我的配偶和讲师相信这应该有用,当然它会起作用,但证据不然。
如果我以完全错误的方式解决这个问题,有人可以告诉我我应该做什么吗?欢呼声
答案 0 :(得分:1)
此:
dates.Columns("AcademicYear")
是整个列。您只能从一个行中分配值。
例如,要使用DataTable的第一行:
.Parameters("@AcademicYear").Value = dates.Rows[0]("AcademicYear")