如何在C#中对SQL Server取出的点分版本号实现末位加1操作
问题原因
你遇到的报错是因为1.1.2是多段分隔的版本字符串,不是合法的整数/浮点数格式,不能直接用Convert.ToInt32或者转float处理。
修复方案
推荐直接用.NET 内置的Version类处理标准版本号,修改Button1_Click的代码如下:
private void Button1_Click(object sender, EventArgs e) { // 把label里的版本字符串转成Version对象 Version currentVer = Version.Parse(lbVerionUpdate.Text); // 最后一段(Build号)加1,生成新版本 Version newVer = new Version(currentVer.Major, currentVer.Minor, currentVer.Build + 1); // 更新label显示 lbVerionUpdate.Text = newVer.ToString(); // 注意:如果需要把更新后的版本号存回SQL Server,补充下面的更新逻辑即可 // string maincon = ConfigurationManager.ConnectionStrings["Connstring"].ConnectionString; // using (SqlConnection sqlconn = new SqlConnection(maincon)) // { // sqlconn.Open(); // string updateSql = "update tbl_Version set Version = @NewVer"; // SqlCommand updateComm = new SqlCommand(updateSql, sqlconn); // updateComm.Parameters.AddWithValue("@NewVer", newVer.ToString()); // updateComm.ExecuteNonQuery(); // } }
替代实现(适配非标准版本号格式)
如果你的版本号可能超过4段(比如1.1.2.3.4)或者有自定义格式,可以用字符串分割的方式处理:
private void Button1_Click(object sender, EventArgs e) { string[] verParts = lbVerionUpdate.Text.Split('.'); // 取最后一段转数字加1 int lastPart = int.Parse(verParts[verParts.Length - 1]); verParts[verParts.Length - 1] = (lastPart + 1).ToString(); // 拼接回版本字符串 lbVerionUpdate.Text = string.Join(".", verParts); // 同样可根据需求补充存库逻辑 }
额外优化提示
你原有的Checkversion方法里的数据库连接没有做资源释放,建议把SqlConnection、SqlCommand、SqlDataAdapter都用using包裹,避免内存泄漏。
内容的提问来源于stack exchange,提问作者Quân Nè
相关产品推荐
相关产品推荐

