[英]How to insert DataGridView data in to table of access database using c#?
[英]Insert a Data Table to Access Database using c#
我從頭開始嘗試了一些代碼將DataTable
插入Access
數據庫中。 下面是代碼:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.