我有一个要写入数据的Access数据库。我在测试过程中成功做到了这一点,但是由于我打算一次从API响应中一次处理多达1万个查询,因此尝试将代码转换为迭代高效地运行。
我尝试过的事情
我能够使用以下命令成功写入我的Access数据库
using (OleDbConnection myCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Lenovo\\Desktop\\Weather Cruncher\\wcMainDB.accdb"))
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "Insert into stations_NOAA " +
"([stationID],[stationName],[stationMinDate],[stationMaxDate],[stationDataCoverage]," +
"[stationLatitude],[stationLongitude],[stationElevation],[stationElevationUnit])" +
"values (?,?,?,?,?,?,?,?,?)";
cmd.Parameters.AddWithValue("@stationID", "1000"); // Short Text data type
cmd.Parameters.AddWithValue("@stationName", "2000"); // Short Text data type
cmd.Parameters.AddWithValue("@stationMinDate", "3000"); // Short Text data type
cmd.Parameters.AddWithValue("@stationMaxDate", "4000"); // Short Text data type
cmd.Parameters.AddWithValue("@stationDataCoverage", 5000); // Number data type
cmd.Parameters.AddWithValue("@stationLatitude", 6000); // Number data type
cmd.Parameters.AddWithValue("@stationLongitude", 7000); // Number data type
cmd.Parameters.AddWithValue("@stationElevation", 8000); // Number data type
cmd.Parameters.AddWithValue("@stationElevationUnit", "9000"); // Short Text data type
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
}
foreach (Station loc in noaa.results) { Console.WriteLine(loc.id); Console.WriteLine(loc.name); Console.WriteLine(loc.mindate); Console.WriteLine(loc.maxdate); Console.WriteLine(loc.datacoverage); Console.WriteLine(loc.latitude); Console.WriteLine(loc.longitude); Console.WriteLine(loc.elevation); Console.WriteLine(loc.elevationUnit); Console.WriteLine(); } /* Output GHCND:CA001165793 100 MILE HOUSE 6 NE, CA 1987-06-01 2019-11-09 1 51.6833 -121.2167 928 METERS GHCND:CA001165791 100 MILE HOUSE, CA 1970-05-01 1999-11-30 0.9993 51.65 -121.3 1059 METERS */
我的实际问题
在确认了过程之后,我尝试使用以下命令迭代地编写我的API响应,该响应不起作用并且没有引发任何错误:
using (OleDbConnection myCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Lenovo\\Desktop\\Weather Cruncher\\wcMainDB.accdb")) { OleDbCommand cmd = new OleDbCommand(); cmd.CommandText = "Insert into stations_NOAA " + "([stationID],[stationName],[stationMinDate],[stationMaxDate],[stationDataCoverage]," + "[stationLatitude],[stationLongitude],[stationElevation],[stationElevationUnit])" + "values (?,?,?,?,?,?,?,?,?)"; cmd.Connection = myCon; myCon.Open(); // Populate Datagrid foreach (Station loc in noaa.results) { cmd.Parameters.AddWithValue("@stationID", loc.id); // Short Text data type cmd.Parameters.AddWithValue("@stationName", loc.name); // Short Text data type cmd.Parameters.AddWithValue("@stationMinDate", loc.mindate); // Short Text data type cmd.Parameters.AddWithValue("@stationMaxDate", loc.maxdate); // Short Text data type cmd.Parameters.AddWithValue("@stationDataCoverage", loc.datacoverage); // Number data type cmd.Parameters.AddWithValue("@stationLatitude", loc.latitude); // Number data type cmd.Parameters.AddWithValue("@stationLongitude", loc.longitude); // Number data type cmd.Parameters.AddWithValue("@stationElevation", loc.elevation); // Number data type cmd.Parameters.AddWithValue("@stationElevationUnit", loc.elevationUnit); // Short Text data type } }
具有断点,我能够看到它遍历上面的过程,但是没有发现任何数据添加到Access数据库中。我的查询出了点问题-怎么办?
我有一个要写入数据的Access数据库。我在测试过程中成功完成了此操作,但是由于我打算处理〜...
最后一个示例中每个循环的内部不会显示您在设置参数后调用cmd.excecutenonquery()
using (OleDbConnection myCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Lenovo\\Desktop\\Weather Cruncher\\wcMainDB.accdb"))
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "Insert into stations_NOAA " +
"([stationID],[stationName],[stationMinDate],[stationMaxDate],[stationDataCoverage]," +
"[stationLatitude],[stationLongitude],[stationElevation],[stationElevationUnit])" +
"values (?,?,?,?,?,?,?,?,?)";
cmd.Connection = myCon;
myCon.Open();
// Populate Datagrid
foreach (Station loc in noaa.results)
{
cmd.Parameters.AddWithValue("@stationID", loc.id); // Short Text data type
cmd.Parameters.AddWithValue("@stationName", loc.name); // Short Text data type
cmd.Parameters.AddWithValue("@stationMinDate", loc.mindate); // Short Text data type
cmd.Parameters.AddWithValue("@stationMaxDate", loc.maxdate); // Short Text data type
cmd.Parameters.AddWithValue("@stationDataCoverage", loc.datacoverage); // Number data type
cmd.Parameters.AddWithValue("@stationLatitude", loc.latitude); // Number data type
cmd.Parameters.AddWithValue("@stationLongitude", loc.longitude); // Number data type
cmd.Parameters.AddWithValue("@stationElevation", loc.elevation); // Number data type
cmd.Parameters.AddWithValue("@stationElevationUnit", loc.elevationUnit); // Short Text data type
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}