使用c#将数据表插入Access数据库

阿努拉格

我从头开始尝试了一些代码DataTableAccess数据库中插入一个代码下面是代码:

public void WriteToAccess(DataTable dt)
        {
            string strDSN = "DSN=MYDSN";
            string cmdText="Insert into AccessTable (ColumnA,ColumnB,ColumnC,ColumnD,ColumnE,ColumnF,ColumnG,ColumnH) Values (@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8)";
            using (OdbcConnection cn = new OdbcConnection(strDSN))
            {
                using (OdbcCommand cmd = new OdbcCommand(cmdText, cn))
                {
                    cn.Open();
                    foreach (DataRow r in dt.Rows)
                    {
                        cmd.Parameters.AddWithValue("@p1", r["ColumnA"].ToString());
                        cmd.Parameters.AddWithValue("@p2", r["ColumnB"].ToString());
                        cmd.Parameters.AddWithValue("@p3", r["ColumnC"].ToString());
                        cmd.Parameters.AddWithValue("@p4", r["ColumnD"].ToString());
                        cmd.Parameters.AddWithValue("@p5", r["ColumnE"].ToString());
                        cmd.Parameters.AddWithValue("@p6", r["ColumnF"].ToString());
                        cmd.Parameters.AddWithValue("@p7", r["ColumnG"].ToString());
                        cmd.Parameters.AddWithValue("@p8", r["ColumnH"].ToString());
                        cmd.ExecuteNonQuery();//Exception at this line
                    }

                }
            }

所述DataTable要插入的具有8列,在表中Access,我已创建也具有8列。当我执行上面的代码时,我遇到一个异常。它说:

ERROR [07002ױ] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 8.

我提供8个参数,但会引发错误。

有人可以让我知道我做错了吗?

戈德·汤普森

当前代码至少存在两个问题:

[1]System.Data.Odbc与Access ODBC驱动程序一起使用的参数化查询必须?对所有参数占位符使用问号()。它无法将@p1 @p2...识别为CommandText中的参数,因此会出现“参数太少”错误。您需要使用

string cmdText="Insert into AccessTable (ColumnA,ColumnB,ColumnC,ColumnD,ColumnE,ColumnF,ColumnG,ColumnH)"
        + " Values (?,?,?,?,?,?,?,?)";

[2]如果要Parameters.AddWithValue()在循环内使用,则需要Parameters.Clear()在添加参数值之前先做一个(没有它,您将继续添加新的参数值-一次8个-而不是替换现有的。)

foreach (DataRow r in dt.Rows)
{
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("?", r["ColumnA"].ToString());
    cmd.Parameters.AddWithValue("?", r["ColumnB"].ToString());
    // and so on

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#将数据从表单插入Access数据库

来自分类Dev

使用C#将表从一个MS Access数据库传输到另一个数据库

来自分类Dev

使用实体框架将数据表数据插入数据库?

来自分类Dev

如何在MS Access中使用VBA将值插入数据库表

来自分类Dev

使用C#,如何使用循环在MS Access数据库中插入递增数字?

来自分类Dev

使用C#将数据插入SQLite数据库

来自分类Dev

使用SQL将数据插入MS Access数据库表

来自分类Dev

使用LINQ查询将多行插入数据库表

来自分类Dev

使用C#Windows窗体将CSV文件插入到mysql数据库表中

来自分类Dev

将数据插入数据库C#中的表中

来自分类Dev

如何在C#中将数据表插入到Access数据库

来自分类Dev

处理将数据库实现为数据表

来自分类Dev

如何使用C#将Excel文件中的数据插入Microsoft LocalDB数据库

来自分类Dev

使用C#将Null插入数据库

来自分类Dev

使用Python将数据插入MS Access数据库

来自分类Dev

使用.NET Core将数据插入Access数据库

来自分类Dev

将大数据表写入mysql数据库C#

来自分类Dev

将记录插入Access数据库

来自分类Dev

使用实体框架将数据表数据插入数据库?

来自分类Dev

使用C#将数据插入Access数据库无法正常工作

来自分类Dev

如何使用C#将图片插入数据库?

来自分类Dev

将数组插入数据库表

来自分类Dev

不将数据表单插入数据库表PHP

来自分类Dev

C#从数据库添加数据表中的列

来自分类Dev

将货币插入 Access 数据库 C#?

来自分类Dev

使用c#将ExcelSheet数据插入MySql数据库

来自分类Dev

c# 将数据库提取到 SQL Server 数据表中

来自分类Dev

如何将数据表值插入数据库

来自分类Dev

使用列名参数将数据插入数据库表

Related 相关文章

热门标签

归档