使用C#,如何使用循环在MS Access数据库中插入递增的数字?
我正在尝试使用Visual Studio 2012创建windows窗体,并使用MS Access数据库。此表单将以编程方式创建数据库,并根据用户输入将所有数据手动输入到字段中。 我可以很好地创建数据库和表,主键也可以自动递增。我想做的是输入一个开始和结束的数字,比如说一年,然后在数字范围内循环输入冗余数据和递增的年份,这样可以节省大量的输入。 我让循环工作,并且通过循环的长度将数据输入到每个记录中,但是我需要增加的数字不会增加。 当已经有自动递增主键时,如何根据用户输入获取第二个要递增的字段?任何洞察都将不胜感激,我的问题解决方法如下使用C#,如何使用循环在MS Access数据库中插入递增的数字?,c#,loops,ms-access,increment,numeric,C#,Loops,Ms Access,Increment,Numeric,我正在尝试使用Visual Studio 2012创建windows窗体,并使用MS Access数据库。此表单将以编程方式创建数据库,并根据用户输入将所有数据手动输入到字段中。 我可以很好地创建数据库和表,主键也可以自动递增。我想做的是输入一个开始和结束的数字,比如说一年,然后在数字范围内循环输入冗余数据和递增的年份,这样可以节省大量的输入。 我让循环工作,并且通过循环的长度将数据输入到每个记录中,但是我需要增加的数字不会增加。 当已经有自动递增主键时,如何根据用户输入获取第二个要递增的字段?
private void button3_Click(object sender, EventArgs e)
{
char ch = '"';
string sql = "";
string tempYear = "";
int year = Convert.ToInt32(this.textBoxBegYear.Text);
int endYear = Convert.ToInt32(this.textBoxEndYear.Text);
try
{
OleDbConnection myConnection = new OleDbConnection();
myConnection.ConnectionString
"Provider=Microsoft.ACE.OLEDB.12.0DataSource=" + ch + openFileDialog1.FileName + ch;
myConnection.Open();
sql = "INSERT INTO " + this.comboBox1.SelectedItem.ToString() + " (Year) Values (@tempYear)";
OleDbCommand myCommand = new OleDbCommand(sql, myConnection);
for (int i = year; i <= endYear; i++)
{
tempYear = Convert.ToString(i);
myCommand.Parameters.Add("@tempYear", OleDbType.Numeric).Value = tempYear;
myCommand.ExecuteNonQuery();
}
myCommand.Connection.Close();
}
catch (Exception err)
{
MessageBox.Show("Error: " + err.Message.ToString());
}
}
谢谢。
System.Data.OleDb
忽略参数名称,因此即使在循环中添加同名参数,每次实际上都会创建一个新的附加参数。您添加的每个新参数都有新的(递增的)值,但这些新参数从未使用过;只有第一个(具有第一个值)具有任何效果
您需要做的是。在进入循环之前添加
参数,然后只需更新循环内的。值
:
sql=“插入“+this.comboBox1.SelectedItem.ToString()+”([Year])值(?);
OleDbCommand myCommand=新的OleDbCommand(sql,myConnection);
myCommand.Parameters.Add(“?”,OleDbType.Integer);
对于(int i=年份;i数字是否必须与任何特定的数字相关?不,只是一个我希望随着每个记录而增加的数字。用户输入开始和结束的数字,中间的所有数字都与递增的数字一起填入数据。在这个示例中,用户将在2000年和2002年输入。这也很有意义调试时,我可以看到递增的值,但找不到将其放入字段的方法。
Year ...all other fields
2000 ...stuff
2001 ...identical stuff from previous record
2002 ...identical stuff from first record