DataSet表没有填充

时间:2014-12-10 15:02:45

标签: c# sql datatable dataset

我在Visual Studio中使用DataSet和DataTables相对比较新,我目前正在尝试填充DataTable以查询SQL Insert语句。我现在正在使用的是这个。

            string query = "USE [Database] SELECT e.ID, e.FieldTypeDesc, e.FieldTypeNum, e.tblFieldRefID, f.TableName, f.RefColumn, f.ColumnName FROM tblEnum e JOIN tblFieldRef f  ON e.tblFieldRefID = f.ID;";

            string field0; //field0 - field12 declared

            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
            conn.Open();

            SqlCommand cmd = new SqlCommand(query, conn);

            MRWPDataSet1 dsMRWP = new MRWPDataSet1();
            SqlCommand cmdMRWP = new SqlCommand(query, conn);

            SqlDataAdapter daMRWP = new SqlDataAdapter();
            daMRWP.SelectCommand = cmdMRWP;
            daMRWP.Fill(dsMRWP);  

这一切似乎都按计划运作。当我到达这一部分时,虽然......

            foreach (DataRow drMRWP in dsMRWP.Tables[0].Rows)
            {
                field0 = drMRWP["Field0"].ToString();
                field1 = drMRWP["Field1"].ToString(); //for field0 - field12

                string update = "INSERT INTO [dbo].[Table] ([Code], [Description], [SendEmail], [Type], [CustomForeColor], [Inactive], [ModifiedDate], [CreatedDate], [ModifiedById], [CreatedById], [StartDate], [EndDate]) VALUES (field1, field2, field3, field4, field5, field5, field6, field7, field8, field9, field10, field11, field12)";
                SqlCommand upd = new SqlCommand(update, conn);
            }

它被完全跳过,显然没有值存储在drMRWP中。它甚至没有进入调试阶段,只是跨过了。

我是所有这一切的新手,所以很有可能我忽略了某些事情或者在某个地方犯了一个错误,但是如果我能看到它可能是什么就该死的。任何有关这方面的见解,或者简化可能过于复杂的内容的建议,都会非常感激。

1 个答案:

答案 0 :(得分:1)

由于您使用强类型DataSet,我认为它包含多个表。因此,要么使用“普通”DataSet并继续使用Tables[0],要么使用正确的表格,这是一种源自DataTable的自动生成类型。

例如(假设表格的自动生成类型为tblEnum):

foreach (DataRow drMRWP in dsMRWP.tblEnum)
{
    // ...
}

如果您将DataRows中的DataRow投放到foreach,它还会强烈输入DataRow这些其他属性。因此,将tblEnumRow替换为{{1}}(名称来自表名)。