如何将几个带有值的OldDbParameters添加到单个OleDbCommand中?

时间:2015-10-05 17:27:56

标签: c# parameters oledb

伙计我试图将数据插入数据库,我使用以下代码:

String connectionString = "Provider=vfpoledb;Data Source=C:\\TESTE;Collating Sequence=machine;";
                OleDbConnection FPDBConn = new OleDbConnection(connectionString);
                FPDBConn.Open();

                String strSQL = "INSERT INTO tercli ([id], [nome], [morada], [localidade], [codpostal], [telefone], [fax], [telemovel], [idcontr], [contribuin], [idzona], [zona], [idvendedor], [vendedor], [idpagament], [pagamento], [descontoge], [preco], [mapa], [dias], [plafond], [aviso], [email], [contacto], [rt_irs], [alim], [nru0], [cds0], [dtn0], [nru1], [nome1], [cds1], [dtn1], [nru2], [nome2], [cds2], [dtn2], [nru3], [nome3], [cds3], [dtn3], [nru4], [nome4], [cds4], [dtn4], [nru5], [nome5], [cds5], [dtn5], [dtini], [dtult], [dtprox], [obs], [agrup], [nbenef], [descontog1], [dtnasc], [activo], [cae], [resp], [ncontrato], [hst], [numexa], [numads], [numfunc], [cae1], [riva], [site], [datafac1], [datafac2], [bi], [carta], [sms], [mail], [prefer], [novo], [prof], [foto], [tel], [vlbi], [obs1], [prefer1], [distrito], [adesao], [sexo], [cpessoais], [nib], [balcao], [cproced], [dtfim], [pontostot], [pontosusa]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

                OleDbCommand FPDBCmd = new OleDbCommand(strSQL, FPDBConn);
                FPDBCmd.CommandType = CommandType.Text;
                FPDBCmd.Parameters.AddWithValue("?", "5     ");
                FPDBCmd.Parameters.AddWithValue("?", "Vitor");
                FPDBCmd.Parameters.AddWithValue("?", "  ");
                FPDBCmd.Parameters.AddWithValue("?", "  ");
                FPDBCmd.Parameters.AddWithValue("?", "  ");
                FPDBCmd.Parameters.AddWithValue("?", "  ");
                FPDBCmd.Parameters.AddWithValue("?", "  ");
                FPDBCmd.Parameters.AddWithValue("?", "919042228");
                FPDBCmd.Parameters.AddWithValue("?", "  ");
                FPDBCmd.Parameters.AddWithValue("?", "  ");
                FPDBCmd.Parameters.AddWithValue("?", "   ");
                FPDBCmd.Parameters.AddWithValue("?", "      ");
                FPDBCmd.Parameters.AddWithValue("?", "     ");
                FPDBCmd.Parameters.AddWithValue("?", "          ");
                FPDBCmd.Parameters.AddWithValue("?", " ");
                FPDBCmd.Parameters.AddWithValue("?", "            ");
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", "");
                FPDBCmd.Parameters.AddWithValue("?", 0.000);
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", "");
                FPDBCmd.Parameters.AddWithValue("?", "             ");
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", " ");
                FPDBCmd.Parameters.AddWithValue("?", " ");
                FPDBCmd.Parameters.AddWithValue("?", "      ");
                FPDBCmd.Parameters.AddWithValue("?", "        ");
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", "       ");
                FPDBCmd.Parameters.AddWithValue("?", "          ");
                FPDBCmd.Parameters.AddWithValue("?", "              ");
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", "        ");
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", "        ");
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", "          ");
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", "       ");
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", "        ");
                FPDBCmd.Parameters.AddWithValue("?", "       ");
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", "           ");
                FPDBCmd.Parameters.AddWithValue("?", "    ");
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", " ");
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", "            ");
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", "          ");
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", "           ");
                FPDBCmd.Parameters.AddWithValue("?", " ");
                FPDBCmd.Parameters.AddWithValue("?", "          ");
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", "        ");
                FPDBCmd.Parameters.AddWithValue("?", " ");
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", "          ");
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", "            ");
                FPDBCmd.Parameters.AddWithValue("?", "       ");
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", " ");
                FPDBCmd.Parameters.AddWithValue("?", "       ");
                FPDBCmd.Parameters.AddWithValue("?", "         ");
                FPDBCmd.Parameters.AddWithValue("?", "          ");
                FPDBCmd.Parameters.AddWithValue("?", "           ");
                FPDBCmd.Parameters.AddWithValue("?", now);
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.Parameters.AddWithValue("?", 0.0000);
                FPDBCmd.ExecuteNonQuery();

                FPDBCmd.Dispose();
                FPDBConn.Close();

事情似乎是每次运行时只添加1个参数,而不是同时输入所有参数。

我一直在关注OleDbParameterCollection ClassOleDbParameter数组,但由于我的参数类型各不相同(OleDbType.CharOleDbType.NumericOleDbType.DBDateOleDbType.LongVarChar)我不确定如何去做...

请你们帮帮忙吗?

1 个答案:

答案 0 :(得分:1)

取代“?”对于您的参数,请尝试使用“@id”,“@ nome”,“@ morada”等所有参数。

然后在.ExecuteNonQuery()之前添加这一行:

FPDBCmd.ConvertNamedParametersToPositionalParameters();
FPDBCmd.ExecuteNonQuery();

ConvertNamedParametersToPositionalParameters()允许您使用命名参数,但它会将它们转换为问号。

有关详细说明,请参阅this related question