使用oledb在访问中插入新记录

时间:2014-01-22 07:16:38

标签: c# sql oledb

我可以在具有15列的访问数据库中添加新记录吗?我使用这个sql非常不方便:

insert into Account(col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15) Values(val1,val2,val3,val4,val5,val6,val7,val8,val9,val10,val11,val12,val13,val14,val15)

列表组成列有2个名称(名称)和值(信息)。例如:

name[1]="col1";
info[1]="val1";

普通的列名是否重要?我可以使用这个Sql:

insert into Account(col1) Values(val1)

之后我使用“update”sql和“for-loop”来设置值? 我也收到一个错误: 您向表请求的更改未成功,因为它们将在索引,主键或关系中创建重复值。更改包含重复数据的字段或字段中的数据,删除索引或重新定义索引以允许重复条目,然后重试。

非常感谢你。 :)

2 个答案:

答案 0 :(得分:0)

在for循环之前插入一个并在for循环中更新。

下面给出了一个示例代码。

string Query = "insert into Account(col1) Values(val1)";

// execute it
for(int i=1;i<name.count -1;i++)
{
  Query = "Update  Account set " + name[i] + " = " + info[i] + " where col1 = val1";
  // execute
}

代码未经测试。

答案 1 :(得分:0)

public static void insert(String[] name ,String[] info)
{
    String Names = "";
    String Cols = "";

    for(int i=0;i < name.Length;i++)
    {
        Names += (Names == "" ? "" :  ", ") + name[i];
        Cols += (Cols == "" ? "" : ", ") + "'" + info[i] + "'"; 
    }

    String Query = "insert into Account (" + Names + ") Values (" + Cols + ")";

    Console.WriteLine(Query);
}

代码未经过测试,请注意我为值添加了单引号,假设所有值都是字符串类型。