首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于insert语句插入错行的有关问题

2012-08-30 
关于insert语句插入错行的问题有a,b两个表,还有一个a,b的字段对应表,从将a表的字段名存到一个数组中,读取

关于insert语句插入错行的问题
有a,b两个表,还有一个a,b的字段对应表,从将a表的字段名存到一个数组中,读取对应字段表,然后利用循环语句,利用insert语句在b表中抓取数据,每次抓取一个字段,为什么会出现错行的问题,该怎么解决,用update,但是我update的where条件不会写啊

C# code
private void button5_Click(object sender, EventArgs e)        {            string strSrc = "Server=LIUKAI-THINK;Integrated security=SSPI;database=CkMonitor";            using (SqlConnection thisConnection = new SqlConnection(strSrc))            {                thisConnection.Open();                SqlDataAdapter thisAdapter = new SqlDataAdapter("SELECT * FROM SelectedFields", thisConnection);//读取对应关系表                DataSet thisSet = new DataSet();                thisAdapter.Fill(thisSet, "SelectedFields");                DataTable tbl1 = thisSet.Tables[0];                int rowCount = tbl1.Rows.Count;                int columnCount = tbl1.Columns.Count;                string[]OriginalTableName=new string[rowCount];//原始数据库表名                string[]TargetTableName=new string[rowCount];//目标数据库表名                for (int i = 0; i < rowCount; i++)                {                    OriginalTableName[i]=tbl1.Rows[i][0].ToString();                    TargetTableName[i]=tbl1.Rows[i][1].ToString();                }                    for (int i = 0; i < rowCount; i++)                {                    int count=0;                    for(int j=0;j<columnCount;j++)                    {                        if(DBNull.Value!=tbl1.Rows[i][j])                        {                            count++;                        }                    }                    //读取目标数据库的字段名并存在一个数组Target里                    ArrayList Target = new ArrayList();                    string strField = "SELECT c.name FROM syscolumns AS c inner join sysobjects d on c.id=d.id and d.xtype='U' and d.name<>'dtproperties' where d.name='"+TargetTableName[i]+"'";                    SqlCommand thisCommandField = thisConnection.CreateCommand();                    thisCommandField.CommandText =strField;                    SqlDataReader thisReaderTarget = thisCommandField.ExecuteReader();                           while (thisReaderTarget.Read())                    {                        Target.Add(thisReaderTarget["name"]);                    }                                        thisReaderTarget.Close();                        for (int k = 2; k < count; k++)                        {                            string str1 = "INSERT INTO " + TargetTableName[i] + "(" + Target[k - 1] + ") SELECT " + tbl1.Rows[i][k + 1] + " FROM " + OriginalTableName[i];                           SqlCommand command = new SqlCommand(str1, thisConnection);                          command.ExecuteNonQuery();                         }                                    }                MessageBox.Show("插入数据成功!");                Application.Exit();                           }        }


[解决办法]
那说明你的for循环中取数值或者数值原始值就组织错误,好好调试吧

热点排行