-1

我的目的是将此格式 AN-00000000 的自动编号插入到数据库中,类型为 db varchar。

我在 Windows 窗体中的代码已经保存了一个整数“10000000”。

但我转念一想,如果可能的话,自动编号会像这个 AN-00000000 并用字符串保存到数据库中。

我尽力改变和应用,但突然我无法实现,因为它在整数部分。我正在我们公司创建基本系统来为会员创建自动会员资格,在我们公司我们有 4 个会员部分,即 Dep、sep、mep 和 cef,所以我转而想到我需要实施 4使用以下 ID 来确定他们包含的部门。如 DEP-00000001、SEP-00000001、MEP-0000001 和 CEF-00000001。

任何人都可以对我下面的代码提出建议或发表意见吗?谢谢!

DBconnect.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Windows.Forms;
using System.Data;


namespace PAIRDevelopment.Classes
{
    public class DBConnect
    {
        public static string csConnect = "uid=root; database=membership; pooling = false; convert zero datetime=True";
        public static MySqlConnection csCon= new MySqlConnection(Classes.DBConnect.csConnect);

        public MySqlCommand cmdCon = new MySqlCommand();
        public MySqlDataReader reader;

        public void nonQuery(string cmdText)
        {
            cmdCon.Connection = csCon;
            csCon.Open();
            cmdCon.CommandText = cmdText;
            cmdCon.ExecuteNonQuery();
            cmdCon.Dispose();
            csCon.Close();
        }

        public void OPEN(string cmdtext)
        {
            cmdCon.Connection = Classes.DBConnect.csCon;
            Classes.DBConnect.csCon.Open();
            cmdCon.CommandText = cmdtext;
            reader = cmdCon.ExecuteReader();


        }

        public void CLOSE()
        {
            reader.Close();
            cmdCon.Dispose();
            Classes.DBConnect.csCon.Close();
        }





    }

}

窗体:

using System;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace PAIRDevelopment
{
    public partial class Pair_Individual : Form
    {
        Classes.DBConnect OpenConCls = new Classes.DBConnect();


        public Pair_Individual()
        {
            InitializeComponent();

            textBox6.MaxLength = 13;

        }


 private void benabled_Click(object sender, EventArgs e)
        {

           OpenConCls.OPEN("SELECT MAX(piId) FROM tblpair_individual_membership");

            while (OpenConCls.reader.Read())
            {
                string pcount = OpenConCls.reader[0].ToString();

                if (pcount.Length == 0)
                {
                    textBox1.Text = "10000000";
                }
                else
                {
                    //int pcount1 = Convert.ToInt32(pcount);
                    //int pcountAdd = pcount1 + 1;

                    int pcount1 = Convert.ToInt32(pcount);
                    int pcountAdd = pcount1 + 1;
                    textBox1.Text = pcountAdd.ToString();
                }

            }

            OpenConCls.CLOSE();

}
4

1 回答 1

1
int pcount1 = Convert.ToInt32(pcount);

如果字符串包含超过 0-9,您现在可能会在上面的行上抛出 FormatException。

FormatException - 值不包含可选符号后跟数字序列(0 到 9)。

如果您知道前 4 个字符将始终是“XXX-”(例如“MEP-”),那么您为什么不:

int pcount1 = Convert.ToInt32(pcount.Substring(4)); // ######## part
int pcountAdd = pcount1 + 1;                        // ######## + 1
textBox1.Text = String.Format("{0}-{1:D8}", pcount.Substring(0, 4), pcountAdd);

这将只转换数字部分,增加它,然后将它与第一部分连接起来。

您也可以查看TryParse方法。这将表明您的解析是否成功。

TryParse - 将数字的字符串表示形式转换为其等效的 32 位有符号整数。返回值指示操作是否成功。

于 2013-12-06T12:26:03.840 回答