You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为MSSQL表列添加PRI与AI属性?C#连库前置需求

我来帮你搞定这个问题!首先得明确MSSQL里的对应概念:你说的PRI其实就是主键(Primary Key),AI是自增列(IDENTITY属性),下面分两种场景给你具体操作方法,最后再给你C#连接数据库的基础代码:

给MSSQL表列添加主键(PRI)和自增(AI)属性

场景1:表还没创建,直接在建表时设置

如果你的表还未创建,直接在CREATE TABLE语句里给目标列同时设置IDENTITY和主键就行。举个例子(假设你的表叫Users,要把Id列设为主键+自增):

CREATE TABLE Users (
    Id INT IDENTITY(1,1) PRIMARY KEY, -- IDENTITY(起始值, 增量)实现自增,PRIMARY KEY设为主键
    Username NVARCHAR(50) NOT NULL,
    Email NVARCHAR(100) NOT NULL
);
  • IDENTITY(1,1):表示从1开始,每次新增数据自动加1;
  • PRIMARY KEY:确保该列的值唯一且非空,是表的唯一标识。

场景2:表已经存在,修改现有列添加属性

MSSQL不能直接修改已有列的IDENTITY属性,所以得根据你的数据情况选方法:

方法1:删除原有列后重新添加(适合列无数据或数据可备份迁移)

如果目标列还没有数据,或者数据可以先备份,直接删了重加:

-- 先删除原有列(记得先备份数据!)
ALTER TABLE 你的表名 DROP COLUMN 目标列名;

-- 重新添加列,同时设置自增和主键
ALTER TABLE 你的表名 
ADD 目标列名 INT IDENTITY(1,1) PRIMARY KEY;

方法2:通过临时表迁移数据(适合列已有数据需要保留)

如果目标列已经有数据不想丢失,就用临时表中转:

-- 1. 创建临时表,复制原表所有数据
SELECT * INTO #TempTable FROM 你的表名;

-- 2. 删除原表
DROP TABLE 你的表名;

-- 3. 重新创建原表,给目标列设置自增和主键
CREATE TABLE 你的表名 (
    目标列名 INT IDENTITY(1,1) PRIMARY KEY,
    -- 把其他列按原表结构写在这里,比如:
    列1 NVARCHAR(50) NOT NULL,
    列2 INT NULL
);

-- 4. 把临时表的数据导回新表(允许手动插入自增列的值)
SET IDENTITY_INSERT 你的表名 ON;
INSERT INTO 你的表名 (目标列名, 列1, 列2)
SELECT 目标列名, 列1, 列2 FROM #TempTable;
SET IDENTITY_INSERT 你的表名 OFF;

-- 5. 删除临时表
DROP TABLE #TempTable;

C#连接MSSQL数据库的基础代码

搞定表的属性后,用C#连接数据库很简单,用SqlConnection就行,给你一个基础示例:

using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        // 替换成你的数据库连接信息
        string connectionString = "Server=你的服务器地址;Database=你的数据库名;User Id=数据库用户名;Password=数据库密码;";
        // 如果是本地SQL Server Express,用Windows身份验证的话可以这样写:
        // string connectionString = @"Server=.\SQLEXPRESS;Database=你的数据库名;Integrated Security=True;";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                Console.WriteLine("数据库连接成功!");

                // 示例:执行查询语句
                string querySql = "SELECT * FROM 你的表名";
                using (SqlCommand command = new SqlCommand(querySql, connection))
                {
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            // 这里处理查询到的数据,比如打印出来
                            Console.WriteLine($"目标列值:{reader["目标列名"]},列1值:{reader["列1"]}");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"出错了:{ex.Message}");
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者RoyalNil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:46:06