将数据插入SQL表

时间:2009-01-14 07:08:58

标签: c# sql stored-procedures insert

我的DataTable中的数据就像

ID ContactName1  Designation1 ContactName2 Designation2
1  A             dummy        B            sam 

我的表的表结构是

ID ContactName Designation

我将存储过程中的值传递为:

@ContactName1
@Designation1

@ContactName2
@Designation2

我想要一个插入语句来插入记录。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

假设您的ID主键设置为自动增量,并且您的表有三个字段:

INSERT INTO DataTable (ContactName, Designation) VALUES 
    (@ContactName1, @Designation1), 
    (@ContactName2, @Designation2);

根据实际ID,如果您没有自动增加,从Ivan的响应评论判断,你没有,你实际上可以使用MAX()语句得到它:

SELECT MAX(ID) AS max_id FROM DataTable

答案 1 :(得分:1)

鉴于它存在于存储过程中,为什么要关心它是一个还是两个INSERT语句?显然,两个陈述是微不足道的。

某些DBMS允许您在单个INSERT中列出多个值子句(@Ivan建议这样):

INSERT INTO Table(ID, ContactName, Designation)
    VALUES(1, @ContactName1, @Designation1)
    VALUES(1, @ContactName2, @Designation2);

我不确定值列表之间是否需要逗号。我也不清楚Table中的两个记录是否允许具有相同的ID,也不确定ID是如何确定的 - 这可能是一些自动增量的东西,不同的DBMS也是这样做的。

如果您的DBMS在单个INSERT语句中不支持多个VALUES子句,那么您最好接受两个INSERT语句。如果原子性是一个问题,你可以考虑事务 - 虽然这只是一个更大的事务的一部分,特别是错误的ROLLBACK将是一个问题。如果您的DBMS支持SAVEPOINTS,那么该过程可以在进入时建立保存点,并在退出时提交或回滚到保存点。

答案 2 :(得分:0)

插入数据库值(根据COMMA分配的数量和订单给予值)

EX: -

INSERT INTO TABLENAME VALUES(1,'INDIA')

这里是两列S.N. &安培;国家