南宫云阳 2024-03-14 10:11 采纳率: 66.7%
浏览 23
已结题

C#中自增ID如何加入?

在c#中插入数据,ID需要自增加,再代码中如何做呢?试了好几个都不行,
这个是建立表的的过程

 string sqlMessage = null;
                sqlMessage = "use Celou " + "create table information_demo" + "(ID INT,d_Time datetime,d_ProductType varchar(255),d_Code varchar(255),d_Leaknum varchar(255), d_Pressure varchar(255),  d_Leakvalue varchar(255),d_Leakresult varchar(255))";
                
                SqlCommand Scmd = new SqlCommand(sqlMessage, conn);


这个插入数据

SqlConnection conn = new SqlConnection("Data Source = admin-PC; Database = Celou;User Id = sa; Password = 123456");

            bool res = false;
            try
            {
                //打开数据库
                conn.Open();
                //实例化命令对象
                SqlCommand myCommand = new SqlCommand();
                //把要操作的数据库传过来
                myCommand.Connection = conn;
                //操作类型为文本类型
                myCommand.CommandType = CommandType.Text;
                //
                myCommand.CommandText = @"insert into information_demo(ID,d_Time,d_ProductType,d_Code,d_Leaknum,d_Pressure,d_Leakvalue,d_Leakresult) values(@ID,@时间,@产品型号,@二维码,@组号,@测试压力,@测试值,@测试结果);select @@identity"; 
                int id = myCommand.ExecuteNonQuery();
                string getid = id.ToString("");

                DateTime dt = DateTime.Now;
                string getdt = dt.ToString("yyyy-MM-dd HH:mm:ss");
                myCommand.Parameters.Add(new SqlParameter("@ID", textBox7.Text));
                myCommand.Parameters.Add(new SqlParameter("@时间", dt));
                myCommand.Parameters.Add(new SqlParameter("@产品型号", textBox6.Text));
                myCommand.Parameters.Add(new SqlParameter("@二维码", textBox1.Text));
                myCommand.Parameters.Add(new SqlParameter("@组号", textBox2.Text));
                myCommand.Parameters.Add(new SqlParameter("@测试压力", textBox3.Text));
                myCommand.Parameters.Add(new SqlParameter("@测试值", textBox4.Text));
                myCommand.Parameters.Add(new SqlParameter("@测试结果", textBox5.Text));
                //提交数据
                myCommand.ExecuteNonQuery();
                //关闭数据库
                conn.Close();
                res = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                conn.Close();
            }

            if (res)
            {
                MessageBox.Show("添加成功");
            }

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-14 10:11
    关注

    引自免费微信小程序:皆我百晓生

    在C#中,如果你想要在SQL Server数据库中实现自增ID(Identity)字段,在创建表时需要指定该字段为标识列,并设置自增属性。针对你的问题,请首先修改建表语句以包含Identity属性:

    string sqlCreateTable = "use Celou CREATE TABLE information_demo (ID INT IDENTITY(1,1) PRIMARY KEY, d_Time datetime, d_ProductType varchar(255), d_Code varchar(255), d_Leaknum varchar(255), d_Pressure varchar(255), d_Leakvalue varchar(255), d_Leakresult varchar(255))";
    SqlCommand Scmd = new SqlCommand(sqlCreateTable, conn);
    Scmd.ExecuteNonQuery();
    

    在这段代码中,ID INT IDENTITY(1,1) 指定了 ID 字段为自增字段,从1开始每次增加1。

    插入数据时,由于设置了 ID 为自增字段,所以在插入新记录时无需手动给 ID 字段赋值,直接忽略这个字段即可。以下是修正后的插入数据部分:

    SqlConnection conn = new SqlConnection("Data Source=admin-PC;Database=Celou;User Id=sa;Password=123456");
    
    bool res = false;
    try
    {
        // 打开数据库连接
        conn.Open();
    
        // 实例化命令对象并设置参数化查询
        using SqlCommand myCommand = new SqlCommand(@"INSERT INTO information_demo(d_Time, d_ProductType, d_Code, d_Leaknum, d_Pressure, d_Leakvalue, d_Leakresult)
                                                VALUES(@时间, @产品型号, @二维码, @组号, @测试压力, @测试值, @测试结果)", conn);
    
        DateTime dt = DateTime.Now;
        string getdt = dt.ToString("yyyy-MM-dd HH:mm:ss");
    
        myCommand.Parameters.Add(new SqlParameter("@时间", dt));
        myCommand.Parameters.Add(new SqlParameter("@产品型号", textBox6.Text));
        myCommand.Parameters.Add(new SqlParameter("@二维码", textBox1.Text));
        myCommand.Parameters.Add(new SqlParameter("@组号", textBox2.Text));
        myCommand.Parameters.Add(new SqlParameter("@测试压力", textBox3.Text));
        myCommand.Parameters.Add(new SqlParameter("@测试值", textBox4.Text));
        myCommand.Parameters.Add(new SqlParameter("@测试结果", textBox5.Text));
    
        // 执行插入操作
        int rowsAffected = myCommand.ExecuteNonQuery();
    
        if (rowsAffected > 0)
        {
            res = true;
        }
    
        // 关闭数据库连接(无需在这里关闭,因为使用了using语句,会在结束时自动关闭)
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
    
    if (res)
    {
        MessageBox.Show("添加成功");
    }
    

    上述代码中,插入数据时没有再对 ID 字段进行处理,因为在创建表结构时已经将其设置为了自增字段,所以每当你执行插入操作时,数据库会自动为其生成一个新的唯一ID值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥20 c语言写的8051单片机存储器mt29的模块程序
  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大