データベースで INSERT ステートメントを実行し、Auto_Increment 主キーを返す関数が必要です。私は次の C# コードを持っていますが、INSERT ステートメントは正常に動作しますが (データベース内のレコードを確認でき、PK は正しく生成され、行 == 1)、id 値は常に 0 です。違う?
    public int ExecuteInsertStatement(string statement)
    {
        InitializeAndOpenConnection();
        int id = -1;
        IDbCommand cmdInsert = connection.CreateCommand();
        cmdInsert.CommandText = statement;
        int rows = cmdInsert.ExecuteNonQuery();
        if (rows == 1)
        {
            IDbCommand cmdId = connection.CreateCommand();
            cmdId.CommandText = "SELECT @@Identity;";
            id = (int)cmdId.ExecuteScalar();
        }
        return id;
    }
    private void InitializeAndOpenConnection()
    {
        if (connection == null)
            connection = OleDbProviderFactory.Instance.CreateConnection(connectString);
        if(connection.State != ConnectionState.Open)                 
            connection.Open();
    }
答えに応じて、私は試しました:
public int ExecuteInsertStatement(string statement, string tableName)
    {
        InitializeAndOpenConnection();
        int id = -1;
        IDbCommand cmdInsert = connection.CreateCommand();
        cmdInsert.CommandText = statement + ";SELECT OID FROM " + tableName + " WHERE OID = SCOPE_IDENTITY();";
        id = (int)cmdInsert.ExecuteScalar();
        return id;
    }
しかし、「SQLステートメントの終了後に文字が見つかりました」というエラーが表示されます
OleDb 接続で MS Access データベースを使用しています。Provider=Microsoft.Jet.OLEDB.4.0