ADO.NET获取多列的值,然后比较后选择一个回填到一个新的字段

本文介绍了一种从数据库中读取并更新学历信息的方法。使用C#与SQL结合,针对特定ID查询第一学历、第二学历及第三学历,并将最高学历回填到数据库中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里用学历进行选择,比如第一学历,第二学历,第三学历
先通过SqlDataReader获取数据,然后选择一个回填到字段里

code:

using (SqlConnection cn = new SqlConnection())

        {
        
            cn.ConnectionString = @"Data Source = ******; Initial Catalog = ******; Integrated Security = False; User ID = sa; Password = ******";
            cn.Open();

            int id = 3;
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = cn;
                cmd.CommandText = "Select firstDegree,secondDegree,thirdDegree from Educations where id =@id";
                cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
                SqlDataReader reader = cmd.ExecuteReader();

                string firstDegree = "";
                string secondDegree = "";
                string thirdDegree = "";
                string Highest;
                //判断是否有返回值
                if (reader.HasRows)
                {
                    //打开第二个sqlcommand
                    SqlCommand cmd1 = new SqlCommand();
                    cmd1.Connection = cn;
                    //判断该列是否有值
                    if (!reader.IsDBNull(reader.GetOrdinal("firstDegree")))
                    {
                        firstDegree = reader.GetString(0);
                        //id = reader.GetInt32("firstDegree");//这里可以直接用0,也可以直接用firstDegree
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("secondDegree")))
                    {
                        secondDegree = reader.GetString(1);
                    }
                    if (!reader.IsDBNull(reader.GetOrdinal("thirdDegree")))
                    {
                        thirdDegree = reader.GetString(1);
                    }

                    //第三学历不为空的话,回填第三,第二第一皆如此
                    if(thirdDegree == "")
                    {
                        if (secondDegree == "")//回填第一学历
                        {
                            Highest = firstDegree;
                        }
                        else//回填第二学历
                        {
                            Highest = secondDegree;
                        }
                    }
                    else //回填第三学历
                    {
                        Highest = thirdDegree;
                    }
                    cmd1.CommandText = "Update Educations set Highest = @Highest where id = @id";
                    cmd1.Parameters.Add("@Highest", SqlDbType.NVarChar).Value = Highest;
                    cmd1.Parameters.Add("@id", SqlDbType.Int).Value = id;

                    reader.Close();
                    cmd1.ExecuteNonQuery();
                }
            }
        }

如果需要对查询的结果进行截取,可以使用
firstDegree = read.GetString(0).Substring(0,2);

或者,Highest = firstDegree.Substring(0,2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值