使用C#在MS访问数据库中找到最高编号

时间:2011-07-19 11:40:17

标签: c# ms-access

如何在MS访问表的特定列中找到最大数字?我正在使用C#。

我无法为此制定逻辑。我这样做了:

int i, lastID;
int y = 0;
int lastRow = DS.Tables[0].Rows.Count;
for (i = 0; i > -1; i++)
{
    i = Convert.ToInt32(DS.Tables[0].Rows[i]["id"].ToString());
    lastID = (y > i) ? y : i;
    if (i > lastRow)
    {
        lastID++;
        empIdLabel.Text = lastID.ToString();
    }
}

我很生气!!!!

4 个答案:

答案 0 :(得分:5)

除非有明显的原因,否则应使用SQL:SELECT MAX(id) FROM . . .

您可以使用OLEDB连接执行此操作:

OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=blahblah.mdb"));
connection.Open();
OleDbCommand maxCommand = new OleDbCommand("SELECT max(id) from TABLENAME", connection);
Int32 max = (Int32)maxCommand.ExecuteScalar();

请注意,我在Linux机器上,所以我没有测试过上面的内容,但它应该与我记得的C#非常接近。

答案 1 :(得分:1)

您可以将SQL用于此目的

select max(id) from tablename

答案 2 :(得分:1)

建议在查询中而不是在代码中执行此操作。

查询可能是

Select Max(ColName) From TableName;

答案 3 :(得分:1)

 String cs = @"Provider=Microsoft.ACE.OLEDB.12.0;Data    
 Source=databasepath\databasename.mdb"; 
 OleDbConnection con = new OleDbConnection(cs);
 con.Open();
 OleDbCommand com = new OleDbCommand("select Max(id) as ID from tablename",
 con);
 com.CommandType = CommandType.Text;
 OleDbDataReader r = com.ExecuteReader();
 r.Read();
 if (r["ID"].ToString() != "")
           {
               temp = int.Parse(r["ID"].ToString()) + 1;
           }
 else
           {
                temp = 1;
           }
 textBox1.Text = temp.ToString();
 r.Close();
 con.Close();