0

我有一个 MS SQL Server 数据库,上面有大约 75 个表,如果不存在具有相同主键的记录,我会尝试将记录插入表中,或者如果存在则更新。我可以将每个表的主键硬编码到我的 vb.net 代码中,但我不想在以后添加更多表,并且我的代码需要在不更改的情况下处理这个问题。有没有办法使用查询从表中提取主键列名称,以便我可以循环遍历执行相同代码的每个表?

谢谢,汤姆

PS我在SQL方面有点新手,所以如果你有时间,请简单明了地回答任何问题。

4

2 回答 2

1

看看在数据库中查找具有主键约束的表

SELECT  i.name AS IndexName,
        OBJECT_NAME(ic.OBJECT_ID) AS TableName,
        COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName
FROM    sys.indexes AS i INNER JOIN 
        sys.index_columns AS ic ON  i.OBJECT_ID = ic.OBJECT_ID
                                AND i.index_id = ic.index_id
WHERE   i.is_primary_key = 1
于 2010-09-23T10:50:18.410 回答
0

有一种更简单的方法可以做到这一点。它被称为ADO.NET :)

基本上,您需要 aDataAdapter将数据库中的数据提取到DataSet. DataTable然后,您向 a中的a 添加、修改或删除行,DataSet并且当您准备好提交到您告诉DataAdapter这样做的数据库时。DataSet可以跟踪对其所做的更改,并且知道DataAdapter根据RowState行/记录的属性使用什么语句。

请参阅此处如何使用 ADO.NET 检索和修改数据。

于 2010-09-23T10:51:23.913 回答