0
Dim sqlsyntax As String
        Dim result As String

        sqlsyntax = "INSERT INTO tblOfficeEquipmentProfile(OE_ID, OE_Category,OE_SubCategory, OE_Name, OE_User, OE_Brand, OE_Model, OE_Specs, OE_SerialNo, OE_PropertyNo, OE_Static_IP, OE_Vendor, OE_PurchaseDate, OE_WarrantyInclusiveYear, OE_WarrantyStatus, OE_Status, OE_Dept_Code,OE_Location_Code,OE_Remarks)" _
                 & "VALUES(@OE_ID,@OE_Category,@OE_SubCategory,@OE_Name,@OE_User,@OE_Brand,@OE_Model,@OE_Specs,@OE_SerialNo,@OE_PropertyNo,@OE_Static_IP,@OE_Vendor,@OE_PurchaseDate,@OE_WarrantyInclusiveYear,@OE_WarrantyStatus,@OE_Status,@OE_Dept_Code,@OE_Location_Code,@OE_Remarks)"
        Dim adapter As SqlDataAdapter

        adapter.InsertCommand = New SqlCommand(sqlsyntax, sqlconn)

        adapter.InsertCommand.Parameters.Add("@OE_ID", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_Category", SqlDbType.Char)
        adapter.InsertCommand.Parameters.Add("@OE_SubCategory", SqlDbType.Char)
        adapter.InsertCommand.Parameters.Add("@OE_Name", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_User", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_Brand", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_Model", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_Specs", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_SerialNo", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_PropertyNo", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_Static_IP", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_Vendor", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_PurchaseDate", SqlDbType.SmallDateTime)
        adapter.InsertCommand.Parameters.Add("@OE_WarrantyInclusiveYear", SqlDbType.Int)
        adapter.InsertCommand.Parameters.Add("@OE_WarrantyStatus", SqlDbType.Char)
        adapter.InsertCommand.Parameters.Add("@OE_Status", SqlDbType.VarChar)
        adapter.InsertCommand.Parameters.Add("@OE_Dept_Code", SqlDbType.Char)
        adapter.InsertCommand.Parameters.Add("@OE_Location_Code", SqlDbType.Char)
        adapter.InsertCommand.Parameters.Add("@OE_Remarks", SqlDbType.VarChar)


        For i As Integer = 0 To DataGrid1.VisibleRowCount - 1
            'adapter.InsertCommand.Parameters(0).Value = Convert.ToInt32(txtEmpID.Text.Trim)
            adapter.InsertCommand.Parameters(0).Value = DataGrid1(i, 0).GetType
            adapter.InsertCommand.Parameters(1).Value = DataGrid1(i, 1).GetType
            adapter.InsertCommand.Parameters(2).Value = DataGrid1(i, 2).GetType
            adapter.InsertCommand.Parameters(3).Value = DataGrid1(i, 3).GetType
            adapter.InsertCommand.Parameters(4).Value = DataGrid1(i, 4).GetType
            adapter.InsertCommand.Parameters(5).Value = DataGrid1(i, 5).GetType
            adapter.InsertCommand.Parameters(6).Value = DataGrid1(i, 6).GetType
            adapter.InsertCommand.Parameters(7).Value = DataGrid1(i, 7).GetType
            adapter.InsertCommand.Parameters(8).Value = DataGrid1(i, 8).GetType
            adapter.InsertCommand.Parameters(9).Value = DataGrid1(i, 9).GetType
            adapter.InsertCommand.Parameters(10).Value = DataGrid1(i, 10).GetType
            adapter.InsertCommand.Parameters(11).Value = DataGrid1(i, 11).GetType
            adapter.InsertCommand.Parameters(12).Value = DataGrid1(i, 12).GetType
            adapter.InsertCommand.Parameters(13).Value = DataGrid1(i, 13).GetType
            adapter.InsertCommand.Parameters(14).Value = DataGrid1(i, 14).GetType
            adapter.InsertCommand.Parameters(15).Value = DataGrid1(i, 15).GetType
            adapter.InsertCommand.Parameters(16).Value = DataGrid1(i, 16).GetType
            adapter.InsertCommand.Parameters(17).Value = DataGrid1(i, 17).GetType
            adapter.InsertCommand.Parameters(18).Value = DataGrid1(i, 18).GetType

            result = adapter.InsertCommand.ExecuteNonQuery()
            MsgBox("success fully added")
            adapter.InsertCommand.Parameters.Clear()
        Next

先生,我将代码修改为以下 sql 数据,

但在这里返回错误

---->adapter.InsertCommand = New SqlCommand(sqlsyntax, sqlconn)

错误:EOEHR.exe 中出现“System.NullReferenceException”类型的未处理异常

附加信息:对象引用未设置为对象的实例。

4

1 回答 1

0

据我所知, aDataGrid通过 indexing 访问单元格MyDataGrid(RowIndex, ColumnIndex),就像数组一样。这允许您获取或设置指定单元格的值作为对象,然后您可能必须或可能不必将其转换为适当的类型。

.Row(Index)不适用于此控件,也不适用.Column(Index),因为似乎没有为这些对象中的任何一个公开一个集合。

您可以尝试将代码更改为:

For i As Integer = 0 To 'Get the table from the data source here and loop through that instead of just looping through the datagrid.
     adapter.InsertCommand.Parameters(0).Value = Convert.ToInt32(txtEmpID.Text.Trim)
     adapter.InsertCommand.Parameters(1).Value = grdFamily(i, 0).ToString()
     adapter.InsertCommand.Parameters(2).Value = grdFamily(i, 1).ToString()
     adapter.InsertCommand.Parameters(3).Value = grdFamily(i, 2).ToString()
     adapter.InsertCommand.Parameters(4).Value = grdFamily(i, 3).ToString()

     result = adapter.InsertCommand.ExecuteNonQuery()
     adapter.InsertCommand.Parameters.Clear()

注意我不知道你的数据类型是什么,所以我不能在这个示例中转换为适当的类型。

更新:

刚刚意识到您的代码是在 C# 中,而我的答案是在 VB.Net 中,我更新为我认为正确的 C# 语法。

更新2:

不确定您使用的是 C# 还是 VB.NET,您似乎同时使用了两者,因此再次更新对 VB.Net 的回答以反映您的问题标签。

更新 3:

好的,在做了一些研究之后,你试图通过数据网格做的事情似乎很复杂。正如@Dai 在对您的问题的评论中建议的那样,您真的应该得到 VS2012 Express。

在任何情况下,如果您打算在 .NET 1.1 中执行 ti,那么您应该真正掌握DataTable用于填充数据网格并循环遍历它的方法,因为它更简单。您可以在互联网上找到许多资源,它们会告诉您如何做到这一点。

我真的无法为您提供比这更多的帮助。老实说,我认为这是一个很好的答案,除非这里有人手头有一些遗留代码或仍然记得 .Net 1.1 并愿意为您重写代码。

于 2013-03-21T06:42:24.757 回答