使用 C#,如何使用循环在 MS Access 数据库中插入递增数字?
Posted
技术标签:
【中文标题】使用 C#,如何使用循环在 MS Access 数据库中插入递增数字?【英文标题】:With C#, how to insert incrementing numbers in MS Access database using a loop? 【发布时间】:2015-04-04 18:56:37 【问题描述】:我正在尝试使用 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());
我希望完成的输出如下,但我需要先增加数字,其余的工作正常......
Year ...all other fields
2000 ...stuff
2001 ...identical stuff from previous record
2002 ...identical stuff from first record
谢谢。
【问题讨论】:
这个数字是否必须与任何特别的事物相关? 不,只是我想随着每条记录增加一个数字。用户输入开始和结束的数字,中间的所有内容都填入数据以及递增的数字。在示例中,用户将输入 2000 和 2002。 【参考方案1】:System.Data.OleDb
忽略参数 names,因此即使您在循环中 .Add
使用相同名称的参数,您实际上每次都会创建一个新的附加参数。您添加的每个新参数都有新的(增加的)值,但这些新参数从未使用过;只有第一个(具有第一个值)有任何效果。
你需要做的是.Add
进入循环之前的参数,然后只需更新循环内的.Value
即可:
sql = "INSERT INTO " + this.comboBox1.SelectedItem.ToString() + " ([Year]) VALUES (?)";
OleDbCommand myCommand = new OleDbCommand(sql, myConnection);
myCommand.Parameters.Add("?", OleDbType.Integer);
for (int i = year; i <= endYear; i++)
myCommand.Parameters[0].Value = i;
myCommand.ExecuteNonQuery();
【讨论】:
在调试时,我可以看到增加的值但找不到将其放入该字段的方法,这也很有意义。以上是关于使用 C#,如何使用循环在 MS Access 数据库中插入递增数字?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中使用 OleDB 列出 MS Access 文件中的所有查询?
如何使用 MS Access 在 C# 中的两个日期之间进行搜索
如何使用 C# 在 MS-Access 中的查询中使用带有通配符的 LIKE 运算符
如何使用 C# 查询远程 MS ACCESS .mdb 数据库